думаю вам поможет
в commonlib.scr кидаем function include(lib) { if (jmc.GetVar("Global" + lib.toUpperCase() + "Included") == 1) return; jmc.ShowMe("Including \"" + lib + "\"..."); jmc.SetVar("Global" + lib.toUpperCase() + "Included", 1); jmc.Parse("#read " + lib + ".set"); var sFileName = "settings/" + lib + ".scr"; var FileSystem = new ActiveXObject("Scripting.FileSystemObject"); var Stream; try { Stream = FileSystem.OpenTextFile(sFileName, 1); } catch(e) { jmc.ShowMe("ERROR: Can't include \"" + sFileName + "\" (" + e.description + ")"); return; } jmc.Eval(Stream.ReadAll()); Stream.Close(); } и пишем алиас #al {include} {#script include("%0")} алиас можно пихнуть в дефаулт.set ) и теперь у нас есть два конфиг файла тряляля.set и тряляля.scr пишем include тряляля и у нас подгружается и конф и скрипты, таким образом можно разбить конфиг на части ) |
Цитата:
//Это мой конфиг или /*Это мой конфиг*/ |
Спасибо за ответы, но нашелся более простой способ решения моей проблемы. Дело в том, что клиент не обрабатывает две строки типа:
jmc.RegisterHandler("Incoming","OnIncoming()"); и хоть как ты не называй другие функции, будь то OnIncoming2() или еще как-то, вызываться будет только последняя функция. А решение такое: в файле commonlib.scr создать функцию с любым именем, например: function Incoming(), а вызов ее совершать из функиции профайловского скрипта. Таким образом будут выполняться и общие и свойственные только текущему профайлу скрипты |
У меня еще один вопрос: как реализовать в скрипте:
#action {^Ваш опыт повысился на %0 оч} {гг %0} {5} {default} т.е. возникли проблемы, как выделить из строки подстроку %0 Я сделал что-то вроде: var line = jmc.Event; if (line.search ("^Ваш опыт повысился на ") != -1) { line=line.replace ("Ваш опыт повысился на ", ""); line=line.replace (" очков.", ""); line=line.replace (" очко.", ""); line=line.replace (" очка.", ""); account += line*1; } ...но что-то слишком коряво получилось. Да еще пришлось писать account += line*1; - ибо иначе не складывает два числа, а выполняет Concat, т.е. 50+150=50150 :( |
Цитата:
Попробуй вот так Код:
line=jmc.Event; ЗЫ Почитай про regexp(регулярные выражения) в JavaScript. |
Вообще лучше не делать на скриптах то что можно сделать на TinTin, вот хороший счетчик экспы) придуманный не мной
вот из файла exp.set #alias {экспасброс} {оч; #script {jmc.SetVar("ExpMobExperience", 0); jmc.SetVar("ExpStartTime", (new Date).getTime()); jmc.SetVar("ExpNeedInit", 1);}} {Exp} #alias {экспа} {#script GlobalExpShowExp()} {Exp} #action {Ваш опыт повысился на %1 очк} {#math {ExpMobExperience} {$ExpMobExperience + %1}} {Exp} #action {Ваш опыт - %1 очк} {#script ExpOnReceivedCurExp(%1)} {Exp} #variable {ExpStartTime} {0} #variable {ExpExperience} {0} #variable {ExpMobExperience} {0} #variable {ExpBattleExperience} {0} #variable {ExpNeedInit} {1} #group local Exp #group enable Exp а вот скрипты из файла exp.scr function ExpOnReceivedCurExp(exp) { if (jmc.GetVar("ExpNeedInit") == 1) { jmc.SetVar("ExpExperience", exp); jmc.SetVar("ExpNeedInit", 0); } else { jmc.SetVar("ExpBattleExperience", exp - jmc.GetVar("ExpExperience") - jmc.GetVar("ExpMobExperience")); } } function GlobalExpShowExp() { dt = new Date; var span = (dt.getTime() - jmc.GetVar("ExpStartTime")) / 1000 / 60; jmc.ShowMe("Набрано опыта: " + jmc.GetVar("ExpMobExperience") +" за мобов и " + jmc.GetVar("ExpBattleExperience") + " бэтл экспы, за время: " + span.toFixed(0) + " мин. " + ((Number(jmc.GetVar("ExpMobExperience")) + Number(jmc.GetVar("ExpBattleExperience"))) / span).toFixed(0) + " опыта в минуту."); } все это можно подключить при помощи функции include() которую я описывал выше. :) |
стоп не понял а где тут бетал экспа считается?? а то я пытался написать неполучалось... последней проблеммой стало переход на уровень... потому что у тебя сейчас 3 очка ДСУ, а тут вдруг 12м... и счетчик прибавляет -12м к экспе...
|
ТАк всетаки, объясни как работает.. Как бэтл экспу считать. Я чет не понял... из кода.. да и пока не внедряю
|
ты гдето видишь что счетсчик экспы сканит скока у тебя дсу ?
|
Счетчик сканит не дсу, а всю экспу.
|
Попробовал поюзать. Заметил что строчка "БЭТЛ ЭКСПА" обновляется только после набирания "оч" вот в чем кора... ясно.
понятно.. Хитро однако. только я хотел чтобы без спама ОЧ это все считалось. |
НЕ сильно уж и большой спам) ну если хочешь предложить что-то лучшее пробуй )
|
Почемуто не работают регекспы под жабой..никак не пойму почему(((
Как без регекспов из jmc.Event вытащить название и описание комнаты? |
работает в жабе регэксп просто надо сначало маны в инете про яваскрипт почитать, а потом чето делать
|
чтобы бэтлэкспа считалась нормально без повторно вывода "очки/счет"
нужно подправить алиас для сброса экспы #alias {экспасброс} {оч; #script {jmc.SetVar("ExpBattleExperience", 0); jmc.SetVar("ExpMobExperience", 0); jmc.SetVar("ExpStartTime", (new Date).getTime()); jmc.SetVar("ExpNeedInit", 1);}} {Exp} |
Цитата:
ЗЫ На перле попробовал - такая же фигня. Просто регекспы надо проинициализировать как-то, чтобы заработало, а вот как - я хз) |
regexp не нужно инициализировать, они по дефолту работают
писать просто правильно надо. в #subs не работает regexp , только в #action |
Ну хорошо - рассмотрим на примере. Возьмем,например, кусок функции, срабатывающей на событие Incoming, лебезно предоставленной Devastator'ом
function CaptureTells() { var tmp=jmc.Event; var tely=/\[1;36m([А-Яа-я]+|Кто-то) сказал[а]? Вам : '(.+)'$/; res = tely.exec(tmp); jmc.Output(res[1]); } По логике вещей - если все арбайтен, то при реакции на входящий телл в output вылетит имя телявшего. Так вот в функцию то залетает на incoming нормально, а вот разбор строки телла не происходит. |
хм..
вобщем проблема в следующем... похоже малость что-то где-то изменилось в коде... var tely=/\[1;36m([А-Яа-я]+|Кто-то) сказал[а]? Вам : '(.+)'$/; это раньше работало! 100% сейчас не срабатывает ! цвет текста меняется до конца ввода строки. и чтобы сейчас нормально работало нужно изменить regexp на var tely=/\[1;36m([А-Я][а-я]+|Кто-то) сказал[а]? Вам : '(.+)'\[0;37m$/; имх для имени чара лучше использовать не [А-Яа-я]+ , а [А-Я][а-я]+ |
Цитата:
|
Народ, помогите плиз. Есть проблема, объясняю на простом примере:
Если написать в скрипте что-то вроде: var line = jmc.Event; if (line == "Вы голодны.") { jmc.Send("эм голоден") } то при получении строки из мада на тике - триггер срабатывает. Но если набрать команду "счет" - то при получении этих же строк из мада триггер не срабатывает. А все дело в том, что по команде "счет" сообщения: Вы голодны. Вас мучает жажда. отображаются зеленым цветом и строка отличается от сравниваемой. Отключение цветового режима решает проблему, но кому оно надо без цвета? Также можно решить проблему таким образом: if (line.search("Вы голодны.")!=-1) { jmc.Send("эм голоден") } но основная решаемая задача отличается от примера и данный способ не катит. Вопрос: как можно присвоить переменной line значение jmc.Event без управляющих символов, т.е. без цвета |
Код:
line=jmc.event.replace(/\[\d?\;\d+m/g,''); |
Вложений: 2
Подымаем тему на верх :) чтоб не забывали что существует такая
Ну и добавлю от себя еще один пример использования скриптов Так называймая переодевалка на два комплекта файлы .exe .ini .set в папку с жабой, а scr в settings ну подключить его при помощи описанного выше include |
Собсно вопрос по поводу последнего поста, а есть ли здесь люди которые бы хотели видеть плагины для жабы? Если да, то какие?
|
Есть вот такой вопрос: ввожу в жабе (например): объект шлем стальной
Как добавить в скрипте слово шлем в одну переменную а стальной в другу? |
#alias {объект} {#scr jmc.SetVar("var1", "%1"), jmc.SetVar("var2", "%2")}
|
хочу сделать сабс
#sub {/толокнянк([а-я])/} {/толокнянк([а-я])/ 'целебные травы'} не пашет де ошибся ? |
Цитата:
Чисто теоретически это должно выглядеть так: #sub {/толокнянк([а-я])/} {толокнянк$1 'целебные травы'}, это два. |
если я выложу базу данных шмота, меня за это покарают?
|
Это будет не больно, и быстро
|
Не для праздного интереса
Цитата:
{line=line.replace ("/толокнянк([а-я])/", "толокнянк$1 'целебные травы'");} Или я где-то путаю кислое с острым? |
Цитата:
чтоб по табу читалось шмотка елси опознавалась ранее |
Часовой пояс GMT +4, время: 17:41. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot