МПМ Былины - Мир Древней Руси

МПМ Былины - Мир Древней Руси (https://www.bylins.su/vbb/index.php)
-   Клиенты для игры (https://www.bylins.su/vbb/forumdisplay.php?f=52)
-   -   проблема с скриптами в жабе (https://www.bylins.su/vbb/showthread.php?t=2242)

Devastator 31.08.2006 20:54

Вообще лучше не делать на скриптах то что можно сделать на 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() которую я описывал выше. :)

Осьмой 05.09.2006 13:37

стоп не понял а где тут бетал экспа считается?? а то я пытался написать неполучалось... последней проблеммой стало переход на уровень... потому что у тебя сейчас 3 очка ДСУ, а тут вдруг 12м... и счетчик прибавляет -12м к экспе...

Осьмой 08.09.2006 12:17

ТАк всетаки, объясни как работает.. Как бэтл экспу считать. Я чет не понял... из кода.. да и пока не внедряю

Devastator 08.09.2006 17:39

ты гдето видишь что счетсчик экспы сканит скока у тебя дсу ?

judge 11.09.2006 08:19

Счетчик сканит не дсу, а всю экспу.

Осьмой 11.09.2006 10:40

Попробовал поюзать. Заметил что строчка "БЭТЛ ЭКСПА" обновляется только после набирания "оч" вот в чем кора... ясно.
понятно.. Хитро однако. только я хотел чтобы без спама ОЧ это все считалось.

Devastator 11.09.2006 20:51

НЕ сильно уж и большой спам) ну если хочешь предложить что-то лучшее пробуй )

Родовит 27.09.2006 12:30

Почемуто не работают регекспы под жабой..никак не пойму почему(((
Как без регекспов из jmc.Event вытащить название и описание комнаты?

WorM 06.10.2006 05:18

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

Елигор 06.10.2006 12:13

чтобы бэтлэкспа считалась нормально без повторно вывода "очки/счет"
нужно подправить алиас для сброса экспы

#alias {экспасброс} {оч; #script {jmc.SetVar("ExpBattleExperience", 0); jmc.SetVar("ExpMobExperience", 0); jmc.SetVar("ExpStartTime", (new Date).getTime()); jmc.SetVar("ExpNeedInit", 1);}} {Exp}

Родовит 12.10.2006 09:19

Цитата:

Сообщение от WorM (Сообщение 33780)
работает в жабе регэксп просто надо сначало маны в инете про яваскрипт почитать, а потом чето делать

да ну фигня - при чем тут жаваскрипт, если не иницилизируется строка с регекспом.
ЗЫ На перле попробовал - такая же фигня. Просто регекспы надо проинициализировать как-то, чтобы заработало, а вот как - я хз)

Елигор 12.10.2006 11:26

regexp не нужно инициализировать, они по дефолту работают
писать просто правильно надо.

в #subs не работает regexp , только в #action

Родовит 12.10.2006 13:52

Ну хорошо - рассмотрим на примере. Возьмем,например, кусок функции, срабатывающей на событие Incoming, лебезно предоставленной Devastator'ом

function CaptureTells()
{
var tmp=jmc.Event;
var tely=/\[1;36m([А-Яа-я]+|Кто-то) сказал[а]? Вам : '(.+)'$/;
res = tely.exec(tmp);
jmc.Output(res[1]);
}
По логике вещей - если все арбайтен, то при реакции на входящий телл в output вылетит имя телявшего.

Так вот в функцию то залетает на incoming нормально, а вот разбор строки телла не происходит.

Елигор 12.10.2006 16:41

хм..
вобщем проблема в следующем...
похоже малость что-то где-то изменилось в коде...

var tely=/\[1;36m([А-Яа-я]+|Кто-то) сказал[а]? Вам : '(.+)'$/;
это раньше работало! 100%

сейчас не срабатывает !
цвет текста меняется до конца ввода строки.
и чтобы сейчас нормально работало нужно изменить regexp на

var tely=/\[1;36m([А-Я][а-я]+|Кто-то) сказал[а]? Вам : '(.+)'\[0;37m$/;

имх для имени чара лучше использовать не [А-Яа-я]+ , а [А-Я][а-я]+

Devastator 12.10.2006 20:24

Цитата:

Сообщение от Елигор (Сообщение 34060)
хм..
вобщем проблема в следующем...
похоже малость что-то где-то изменилось в коде...

var tely=/\[1;36m([А-Яа-я]+|Кто-то) сказал[а]? Вам : '(.+)'$/;
это раньше работало! 100%

сейчас не срабатывает !
цвет текста меняется до конца ввода строки.
и чтобы сейчас нормально работало нужно изменить regexp на

var tely=/\[1;36m([А-Я][а-я]+|Кто-то) сказал[а]? Вам : '(.+)'\[0;37m$/;

имх для имени чара лучше использовать не [А-Яа-я]+ , а [А-Я][а-я]+

ага тоже заметил )


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

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