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

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

Ответ
 
Опции темы Опции просмотра
Старый 28.08.2006, 09:07   #1
Казуал
Новичок
 
Регистрация: 16.08.2006
Сообщений: 11
По умолчанию

Помогите. Почему-то не поддерживает скрипты, вынесенные с common.scr - файл. Закидываю их "имя конфига".scr - все работает, а с общего не берет. Что делать?
ЗЫ жаба у меня версии 3.26
Казуал вне форума   Ответить с цитированием
Старый 29.08.2006, 03:32   #2
WorM
Занятой мадер
 
Регистрация: 21.11.2004
Адрес: Питер
Сообщений: 131
По умолчанию

Цитата:
Сообщение от Казуал Посмотреть сообщение
Помогите. Почему-то не поддерживает скрипты, вынесенные с common.scr - файл. Закидываю их "имя конфига".scr - все работает, а с общего не берет. Что делать?
ЗЫ жаба у меня версии 3.26
commonlib.scr должен называться файл

ЗЫ а ваще поиск решает

Последний раз редактировалось WorM; 29.08.2006 в 03:39.
WorM вне форума   Ответить с цитированием
Старый 29.08.2006, 08:10   #3
Казуал
Новичок
 
Регистрация: 16.08.2006
Сообщений: 11
По умолчанию

Точно! спасибо за подсказку. Однако вместе с тем столкнулся с другой проблемой, а именно: при написании триггеров и в "профайловском" скриптовом файле и в общем работают триггеры только в "профайловском" *.scr - файле. Пробовал изменять имена функций - не помогает. Подскажите пожалуйста механизм разделения профайловских скриптов и общих.
Казуал вне форума   Ответить с цитированием
Старый 29.08.2006, 22:53   #4
Devastator
Отличник форума
 
Регистрация: 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 тряляля и у нас подгружается и конф и скрипты, таким образом можно разбить конфиг на части )
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 29.08.2006, 23:54   #5
WorM
Занятой мадер
 
Регистрация: 21.11.2004
Адрес: Питер
Сообщений: 131
По умолчанию

Цитата:
Сообщение от Казуал Посмотреть сообщение
Точно! спасибо за подсказку. Однако вместе с тем столкнулся с другой проблемой, а именно: при написании триггеров и в "профайловском" скриптовом файле и в общем работают триггеры только в "профайловском" *.scr - файле. Пробовал изменять имена функций - не помогает. Подскажите пожалуйста механизм разделения профайловских скриптов и общих.
Попробуй первую строку забить пустую или закоментированное что-то

//Это мой конфиг

или

/*Это мой конфиг*/
WorM вне форума   Ответить с цитированием
Старый 31.08.2006, 09:43   #6
Казуал
Новичок
 
Регистрация: 16.08.2006
Сообщений: 11
По умолчанию

Спасибо за ответы, но нашелся более простой способ решения моей проблемы. Дело в том, что клиент не обрабатывает две строки типа:
jmc.RegisterHandler("Incoming","OnIncoming()");
и хоть как ты не называй другие функции, будь то OnIncoming2() или еще как-то, вызываться будет только последняя функция.
А решение такое: в файле commonlib.scr создать функцию с любым именем, например: function Incoming(), а вызов ее совершать из функиции профайловского скрипта. Таким образом будут выполняться и общие и свойственные только текущему профайлу скрипты
Казуал вне форума   Ответить с цитированием
Старый 31.08.2006, 09:56   #7
Казуал
Новичок
 
Регистрация: 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   #8
WorM
Занятой мадер
 
Регистрация: 21.11.2004
Адрес: Питер
Сообщений: 131
По умолчанию

Цитата:
Сообщение от Казуал Посмотреть сообщение
У меня еще один вопрос: как реализовать в скрипте:
#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
account += Math.floor(line) так правильней, Math.floor преобразовывает строку в число.

Попробуй вот так
Код:
line=jmc.Event;

var expstr=/^Ваш опыт повысился на (\d+) очк(о|ов|а)\.$/;
if(expstr.test(line))
 account+=Math.floor(expstr.exec(line)[1]);
Проверил вроде даже работает +)

ЗЫ Почитай про regexp(регулярные выражения) в JavaScript.
WorM вне форума   Ответить с цитированием
Ответ


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

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

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


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


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