|
Клиенты для игры Все что связано с клиентами для игры. Jmc, MMC, ZMud etc... |
|
Опции темы | Опции просмотра |
|
29.08.2006, 08:10 | #1 |
Новичок
Регистрация: 16.08.2006
Сообщений: 11
|
Точно! спасибо за подсказку. Однако вместе с тем столкнулся с другой проблемой, а именно: при написании триггеров и в "профайловском" скриптовом файле и в общем работают триггеры только в "профайловском" *.scr - файле. Пробовал изменять имена функций - не помогает. Подскажите пожалуйста механизм разделения профайловских скриптов и общих.
|
29.08.2006, 22:53 | #2 |
Отличник форума
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
|
думаю вам поможет
в 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 тряляля и у нас подгружается и конф и скрипты, таким образом можно разбить конфиг на части )
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности. |
29.08.2006, 23:54 | #3 | |
Занятой мадер
Регистрация: 21.11.2004
Адрес: Питер
Сообщений: 131
|
Цитата:
//Это мой конфиг или /*Это мой конфиг*/ |
|
31.08.2006, 09:43 | #4 |
Новичок
Регистрация: 16.08.2006
Сообщений: 11
|
Спасибо за ответы, но нашелся более простой способ решения моей проблемы. Дело в том, что клиент не обрабатывает две строки типа:
jmc.RegisterHandler("Incoming","OnIncoming()"); и хоть как ты не называй другие функции, будь то OnIncoming2() или еще как-то, вызываться будет только последняя функция. А решение такое: в файле commonlib.scr создать функцию с любым именем, например: function Incoming(), а вызов ее совершать из функиции профайловского скрипта. Таким образом будут выполняться и общие и свойственные только текущему профайлу скрипты |
31.08.2006, 09:56 | #5 |
Новичок
Регистрация: 16.08.2006
Сообщений: 11
|
У меня еще один вопрос: как реализовать в скрипте:
#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 |
31.08.2006, 10:50 | #6 | |
Занятой мадер
Регистрация: 21.11.2004
Адрес: Питер
Сообщений: 131
|
Цитата:
Попробуй вот так Код:
line=jmc.Event; var expstr=/^Ваш опыт повысился на (\d+) очк(о|ов|а)\.$/; if(expstr.test(line)) account+=Math.floor(expstr.exec(line)[1]); ЗЫ Почитай про regexp(регулярные выражения) в JavaScript. |
|
31.08.2006, 20:54 | #7 |
Отличник форума
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
|
Вообще лучше не делать на скриптах то что можно сделать на 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() которую я описывал выше.
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности. |