Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: jmc :: scripting
DF2 :: ФОРУМЫ > Игровые форумы > MUD DF2 > МАД-клиенты
Ennin
тема создана для обсуждения создания конфигов под jmc. скриптинг на макросах, vbscript, jscript, perl.
Danilych
Конешно можете по праву считать меня краном но никогда не использовал скрипты. Может ктонить показать хоть какието простейшие основы и объяснить как они ваще пишуццо? А там мож осилю ченить. А то очень давно хочеццо научиться.
gamecreator
я раз писал скрипт чтобы при открывании дверей 2 буквы вводить (против всяких там "earring не является сумкой"): o [направнение]
но он у меня сразу же при втором запуске мада заглючил. может из-за того, что я его не туда сохранил.

может создадим тему "обучение" или в этой кто-нить расскажет?
Ennin
основы скриптинга на "тинтине" и js расписаны на сайте-нубам
Shaidar Haran
А мну бейсик нравится smile.gif Он к регистру не чувствителен - это большой плюс для удобства кодинга.
Ennin
ага, а еще он весь такой расплывчатый и склизкий
gamecreator
жаль С++ нет

Добавлено ([mergetime]1169739082[/mergetime]):
а коментить строки как-то можно?
Ennin
ГДЕ?
gamecreator
ну в скриптах под жабу
Ennin
если ты про макросы, то RTFM!!! ##, //, #nop
Aldaran
Здравствуйте! laugh.gif

Много времени провел в поисках хороших скриптов...
Но нашел лишь:несколько вариантов проигрывания *.wav/*.mp3 (к нему же плейлист), ПК лист, перехват теллов, игра в наперстники, запись лог файла (то же самое, что и #log - только добавили время и месяц буквами (что мне даж не очень и понравилось...)), было еще немного скриптов решающих проблемы одиночных пользователей...
Так же я нашел несколько разных туториалов, но все они достаточно однообразны... Хотелось бы чтобы люди выкладывали свои скрипты с целью показать, что они могли сделать, ведь у большого кол-ва персон постоянно возникают вопросы...

А теперь, вопрос ? )
Играя в мад, у меня в конфиге часто используется команда #sub, и при входе в игру, я всегда пишу лог (Персонаж-Дата (Время)). И логи выглядят не очень красиво, хотелось бы чтобы была возможность писать лог с заменами и т.д.
Слышал такое возможно сделать (если нет то извините)...
Ennin
возможно
строку дропаешь (#logpass)
после чего добавляешь свою строку (#logadd)
Aldaran
Здравствуйте!

У меня вопросы по поводу скриптов...Я не слилен в познании язака...

У меня:
{commonlib.scr}

function variables(That)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.OpenTextFile("settings//variables.conf",8);
file.WriteLine(""+That+"");
file.Close();
}

{variables_new.conf}

#scri variables ("")
#scri variables ("#nop ------ $DATE ------")
#scri variables ("")
#scri variables ("#variable {Expectationmessage} $Expectationmessage")
#scri variables ("#variable {triggers} $triggers")
#scri variables ("#variable {vomica} $vomica")
#scri variables ("#variable {weapon} $weapon")
#scri variables ("#variable {mmc} $mmc")
#scri variables ("#variable {acthp} $acthp")
#scri variables ("#variable {actmana} $actmana")
#scri variables ("#variable {prevmana} $prevmana")
#scri variables ("#variable {aim} $aim")
#scri variables ("#variable {aim1} $aim1")
#scri variables ("#variable {aim2} $aim2")
#scri variables ("#variable {aim3} $aim3")
#scri variables ("#variable {battleskill} $battleskill")
#scri variables ("#variable {battlespell} $battlespell")
#scri variables ("#variable {cast} $cast")
#scri variables ("#variable {cast1} $cast1")
#scri variables ("#variable {cast2} $cast2")
#scri variables ("#variable {cast3} $cast3")
#scri variables ("#variable {doubleweap} $doubleweap")
#scri variables ("#variable {eld} $eld")
#scri variables ("#variable {exit} $exit")
#scri variables ("#variable {fires} $fires")
#scri variables ("#variable {maxmana} $maxmana")
#scri variables ("#variable {maxrange} $maxrange")
#scri variables ("#variable {minrange} $minrange")
#scri variables ("#variable {nofoll} $nofoll")
#scri variables ("#variable {pass} $pass")
#scri variables ("#variable {ices} $ices")
#scri variables ("#variable {integhp} $integhp")
#scri variables ("#variable {killer} $killer")
#scri variables ("#variable {loyalweap} $loyalweap")
#scri variables ("#variable {poison} $poison")
#scri variables ("#variable {position} $position")
#scri variables ("#variable {prevhp} $prevhp")
#scri variables ("#variable {prompt} $prompt")
#scri variables ("#variable {protect} $protect")
#scri variables ("#variable {secweapon} $secweapon")
#scri variables ("#variable {shake} $shake")
#scri variables ("#variable {shocks} $shocks")
#scri variables ("#variable {stand} $stand")
#scri variables ("#variable {stun} $stun")
#scri variables ("#variable {fleep} $fleep")
#scri variables ("#variable {armor} $armor")
#scri variables ("#variable {pursuit} $pursuit")
#scri variables ("#variable {kill} $kill")
#scri variables ("#variable {satana} $satana")
#scri variables ("#variable {speedwalk} $speedwalk")
#scri variables ("#variable {wear} $wear")
#scri variables ("#variable {request} $request")
#scri variables ("#variable {tims} $tims")
#scri variables ("#variable {sneak} $sneak")
#scri variables ("#variable {hide} $hide")
#scri variables ("#variable {invis} $invis")
#scri variables ("#variable {vomica} $vomica")

{variables.conf}

#nop ------ 28-07-2007 ------

#variable {Expectationmessage} 0
#variable {triggers} War
#variable {vomica} 0
#variable {weapon} Охтара
#variable {mmc} 1
#variable {acthp} 505
#variable {actmana} 887
#variable {prevmana} 887
#variable {aim} Грюнвальд
#variable {aim1} Грюнвальд
#variable {aim2} Хавк
#variable {aim3} Кливен
#variable {battleskill} вглаз
#variable {battlespell} Магнит
#variable {cast} Магнит
#variable {cast1} Магнит
#variable {cast2} Магнит
#variable {cast3} Магнит
#variable {doubleweap} 0
#variable {eld} 0
#variable {exit} enter
#variable {fires} 0
#variable {maxmana} 1385
#variable {maxrange} 36
#variable {minrange} 24
#variable {nofoll} 1
#variable {pass} 0
#variable {ices} 0
#variable {integhp} 0
#variable {killer} Aldaran
#variable {loyalweap} 0
#variable {poison} 0
#variable {position} 0
#variable {prevhp} 505
#variable {prompt} 0
#variable {protect} 0
#variable {secweapon} НЕТ
#variable {shake} shove
#variable {shocks} 0
#variable {stand} 1
#variable {stun} Синего Мага
#variable {fleep} 0
#variable {armor} 0
#variable {pursuit} 0
#variable {kill} Алва
#variable {satana} 0
#variable {speedwalk} osp
#variable {wear} 21-1
#variable {request} 2
#variable {tims} книг
#variable {sneak} 0
#variable {hide} 0
#variable {invis} 0
#variable {vomica} 0

#nop ------ 29-07-2007 ------

#variable {Expectationmessage} 0
#variable {triggers} War
#variable {vomica} 0
#variable {weapon} Охтара
#variable {mmc} 1
#variable {acthp} 505
#variable {actmana} 887
#variable {prevmana} 887
#variable {aim} Грюнвальд
#variable {aim1} Грюнвальд
#variable {aim2} Хавк
#variable {aim3} Кливен
#variable {battleskill} вглаз
#variable {battlespell} Магнит
#variable {cast} Магнит
#variable {cast1} Магнит
#variable {cast2} Магнит
#variable {cast3} Магнит
#variable {doubleweap} 0
#variable {eld} 0
#variable {exit} enter
#variable {fires} 0
#variable {maxmana} 1385
#variable {maxrange} 36
#variable {minrange} 24
#variable {nofoll} 1
#variable {pass} 0
#variable {ices} 0
#variable {integhp} 0
#variable {killer} edelmut
#variable {loyalweap} 0
#variable {poison} 0
#variable {position} 0
#variable {prevhp} 505
#variable {prompt} 0
#variable {protect} 0
#variable {secweapon} НЕТ
#variable {shake} shove
#variable {shocks} 0
#variable {stand} 1
#variable {stun} Синего Мага
#variable {fleep} 0
#variable {armor} 0
#variable {pursuit} 0
#variable {kill} Алва
#variable {satana} 0
#variable {speedwalk} osp
#variable {wear} 21-1
#variable {request} 2
#variable {tims} книг
#variable {sneak} 0
#variable {hide} 0
#variable {invis} 0
#variable {vomica} 0

#nop ------ 30-07-2007 ------

#variable {Expectationmessage} 0
#variable {triggers} War
#variable {vomica} 0
#variable {weapon} Охтара
#variable {mmc} 1
#variable {acthp} 428
#variable {actmana} 1137
#variable {prevmana} 1025
#variable {aim} Грюнвальд
#variable {aim1} Грюнвальд
#variable {aim2} Хавк
#variable {aim3} Кливен
#variable {battleskill} вглаз
#variable {battlespell} Магнит
#variable {cast} Магнит
#variable {cast1} Магнит
#variable {cast2} Магнит
#variable {cast3} Магнит
#variable {doubleweap} 0
#variable {eld} 0
#variable {exit} enter
#variable {fires} 0
#variable {maxmana} 1385
#variable {maxrange} 38
#variable {minrange} 26
#variable {nofoll} 1
#variable {pass} 0
#variable {ices} 0
#variable {integhp} -23
#variable {killer} Aldaran
#variable {loyalweap} 0
#variable {poison} 0
#variable {position} 0
#variable {prevhp} 428
#variable {prompt} 0
#variable {protect} 0
#variable {secweapon} НЕТ
#variable {shake} shove
#variable {shocks} 0
#variable {stand} 0
#variable {stun} Синего Мага
#variable {fleep} 0
#variable {armor} 0
#variable {pursuit} 0
#variable {kill} Алва
#variable {satana} 0
#variable {speedwalk} osp
#variable {wear} 21-1
#variable {request} 2
#variable {tims} книг
#variable {sneak} 0
#variable {hide} 0
#variable {invis} 0
#variable {vomica} 0

{pk.conf}

#action {Подключение.} {#log logs//$killer-[$DATE];#showme {[1\;41m[1\;44m LogFile is '$killer-[$DATE]' [1\;41m[0\;33m[0\;37m}} {setting}
#action {Arda раскрыла свои просторы перед вами, вы в новом мире!} {#scri Write("[1\;30m[[1\;31m$DATE [1\;30m- $killer[1\;30m]");#log logs//$killer-[$DATE];#showme {[1\;41m[1\;44m LogFile is '$killer-[$DATE]' [1\;41m[0\;33m[0\;37m}} {setting}
#action {Внезапно ваше зрение затуманилось дымкой, через которую все еще видны очертаниЯ} {#log;#read settings/list.conf;#read settings//variables_new.conf} {setting}
#action {Кто-то подсоединилсЯ под вашим именем!} {#log;#read settings/list.conf;#read settings//variables_new.conf} {setting}

Короч, суть в том что мне приходится постоянно чистить variables.conf, что утомляет...
Хочется чтобы был скрипт, который перед процедурой записи чистил файл...
Подскажите, скрипт, или как это сделать?
Спасибо заранее! Удачи!
Ennin
я не воткнул до конца для чего скрипт... но судя по всему - чтобы делать дампы переменных. посему посоветую #sos
Aldaran
Цитата(Ennin @ 01 Aug 2007, 11:59)
я не воткнул до конца для чего скрипт... но судя по всему - чтобы делать дампы переменных. посему посоветую #sos


Этот скрипт и есть для сохраниения переменных!
Но дело в том что, при каждом входе, выходе, сохраняются все переменный в файл, и файл постоянно забивается, мне нужен скрипт, чтоб чистил этот самый файл до записи в него переменных...

В команде #sos так и не разобрался... Пользуюсь старым способом...
Ennin
ну во-первых, надо разбираться в методах FileSystemObject. там явно должен быть метод для очистки.

как перевести этот пример на #sos? очень просто
#sos clear
#sos var Expectationmessage
#sos var triggers
#sos var actmana
#sos var prevmana
#sos var aim
#sos var cast
.....
#sos var vomica
#sos save variables.conf
Rayen
Всем привет. Как я понял, JMC умеет работать с окнами, но так эту возможность и ниасилил до конца. Хотелось бы получить совет специалиста.
Суть такая - я хочу создать окно, в которое выкидывались бы клановые сообщения (вместо основоного). Если есть такая возможность - объясните, пожалуйста, как ее реализовать. Заранее благодарен.
Ennin
сначала надо окно подготовить. #wshow 1 show скажем
можно приткнуть окно к границам окна. если хочется, чтоб оно висело - то #wdock 1 disable, #wpos 1 x y
все.
теперь настраиваем выкидыш строк в окно
#act {^[КЛАН]%0} {#woutput 1 [clan] %0}
если хочется, чтобы в основном окне клановые не показывались, то добавляем дроп
#act {^[КЛАН]%0} {#drop;#woutput 1 [clan] %0}
следует отметить, что таким образом сообщения будут выводиться обесцвеченными. для вывода цветных сообщений надо воспользоваться уже скриптовыми средствами
Rayen
спасибо за разъяснение. учту в разработках. тогда можно еще один вопрос - где можно найти НОРМАЛЬНЫЙ мануал по JMC? ибо ни в оригинальном хелпе, ни в архиве, который на сайте валяется, ничего не сказано ни, к примеру, про "#drop" ни про ^. а я так понимаю - на этом сюрпризы не заканчиваются. хочу все знать, как говорится smile.gif. буду вдвойне признателен за информацию по внутренним переменным JMC, которые можно использовать в скриптах. спасибо.
GrayMage
#drop в хелпе есть...
^ пришло к нам с ММС.
Ennin
мануал вообще по хорошему надо переписывать. найду время - сделаю систему аля википедии чтоб всем миром написать его. вот

Добавлено ([mergetime]1187329014[/mergetime]):
а ^ - это не ММС. это символ обозначения начала строки в синтаксисе регулярных выражений
Rayen
Цитата(Ennin)
мануал вообще по хорошему надо переписывать. найду время - сделаю систему аля википедии чтоб всем миром написать его. вот


Это было-б мегаздорово smile.gif

Цитата(GrayMage)
#drop в хелпе есть...


Ну не знаю... может у меня хелп какой не тот... у меня - англоязычный, Copyright Sergey Ilyin 1998. Мб устаревший просто, но там этого нет ничего. Вот где новее достать бы - вообще не в курсе.

В идеале, имхо, было бы неплохо сделать мануал, рассматривающий скриптовое программирование в JMC со всех сторон - то есть, чтобы и полный чайник смог начать как-то разбираться, и уже профессионал смог бы для себя что-то новое высмотреть. Встроенный скриптовый язык JMC, как я понял, базируется на PERL, а я в нем - дуб дубом. Поэтому, видно, и дается все с трудом. Хотя, в целом, ничего сложного нет, просто сталкиваться приходится с постоянными языковыми проблемами, и куда с ними обращаться - непонятно. Куча времени уходит на перелопачивание интернета в поисках каких-то основ. Вот было бы неплохо эти самые "основы" собрать в мануале, в виде, скажем, отдельного раздела. Такчто идея Эннина - очень даже заманчивая. Со своей стороны - могу пообещать быть полезным там, где смогу - к примеру, в написании статей и т.д.

ЗЫЖ Вот такая строчечка помогла мне избавиться от проблем со злодейскими теллами. Даю ее здесь, может, кому пригодится:

Код
#substitute {;} { }


Вот. Ну, или вместо точки с запятой то, что у вас вместо разделителя стоит. Таким образом, все потенциально опасные разделители, приходящие с сервера, превращаются в абсолютно безобидные пробелы, и спокойно обрабатываются всяческими ACTIONами. Вместо пробела, к примеру, можно поставить какой нибудь другой безобидный знак, тут уже - дело вкуса, главное, стобы он обрабатывался нормально.

Нафлудил что-то я, простите если что )
Aldaran
Здравствуйте!
Помогите... laugh.gif)

Раньше было:

function Dizarmdl00()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("take $weapon");
jmc.parse("wear $weapon");
}
}


function Dizarmloyal()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("wear $weapon");
}
}


function Dizarmdouble()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("take $weapon");
jmc.parse("take $secweapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon");
}
}


function Dizarmdoubleloyal10()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("take $secweapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon");
}
}


function Dizarmdoubleloyal01()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("take $weapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon");
}
}


function Dizarmdoubleloyal11()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon");
}
}

#act {/оружие у вас из рук!$/} {#if {$doubleweap = 0}{#if {$loyalweap1 = 0}{#scri Dizarmdl00()};#if {$loyalweap1 = 1}{#scri Dizarmloyal()}};#if {$doubleweap = 1}{#if {$loyalweap1 = 0}{#if {$loyalweap2 = 0}{#scri Dizarmdouble()};#if {$loyalweap2 = 1}{#scri Dizarmdoubleloyal01()}};#if {$loyalweap1 = 1}{#if {$loyalweap2 = 1}{#scri Dizarmdoubleloyal11()};#if {$loyalweap2 = 1}{#scri Dizarmdoubleloyal10()}}}} {weapons}

Где тут ошибка, хз!
_________________________
#var doubleweap 0
#var loyalweap1 1
#var weapon утрен

wear утрен
ПоселковаЯ учительница выбила оружие у вас из рук! (Работает)
_________________________
#var doubleweap 1
#var weapon утрен
#var secweapon зв
#var loyalweap1 1
#var loyalweap2 1

wear утрен
wear зв
ПоселковаЯ учительница выбила оружие у вас из рук! (Работает)
_________________________
#var doubleweap 1
#var weapon утрен
#var secweapon зв
#var loyalweap1 0
#var loyalweap2 0
_________________________
wear утрен
wear зв
ПоселковаЯ учительница выбила оружие у вас из рук! (Работает)
_________________________
#var doubleweap 1
#var weapon утрен
#var secweapon зв
#var loyalweap1 0
#var loyalweap2 1

take утрен
wear утрен
wear зв
ПоселковаЯ учительница выбила оружие у вас из рук! (Работает)
_________________________
#var doubleweap 1
#var weapon утрен
#var secweapon зв
#var loyalweap1 1
#var loyalweap2 0

take зв
wear утрен
wear зв
ПоселковаЯ учительница выбила оружие у вас из рук! (Работает)
_________________________

#var doubleweap 0
#var weapon утрен
#var loyalweap1 0

Ошибка выполнения Microsoft JScript
Предполагается наличие объекта
Строка:0 Ошибка:0 Scode:800a138f

ПоселковаЯ учительница выбила оружие у вас из рук! (Не работает!)

Искал... искал... плюнул...

сделали:

#act {/оружие у вас из рук!$/} {#scr GlobalDisarm()} {weapons}

function GlobalDisarm()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
if (jmc.GetVar("doubleweap") == 1)
{
if (jmc.GetVar("loyalweap1") == 1)
{ jmc.parse("wear $weapon1"); } else { jmc.parse("take $weapon1"); jmc.parse("wear $weapon1"); }

if (jmc.GetVar("loyalweap2") == 1)
{ jmc.parse("wear $weapon2"); } else { jmc.parse("take $weapon2"); jmc.parse("wear $weapon2"); }

} else
{
if (jmc.GetVar("loyalweap1") == 1)
{ jmc.parse("wear $weapon1"); } else { jmc.parse("take $weapon1"); jmc.parse("wear $weapon1"); }
}
}
}

И снова это же ошибка, только выдает сразу, без разницы что оружие лояльное или нет...

Думаю, фигня... Сделал:

function Disarm()
{
if(jmc.Event=="/оружие у вас из рук!$/")
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
if(jmc.GetVar("doubleweap") == 0)
{
if(jmc.GetVar("loyalweap1") == 0)
{
jmc.parse("take $weapon");
jmc.parse("wear $weapon");
}
else
{
jmc.parse("wear $weapon");
}
}
else
{
if(jmc.GetVar("loyalweap1") == 0)
{
if(jmc.GetVar("loyalweap2") == 0)
{
jmc.parse("take $weapon");
jmc.parse("take $secweapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon")
}
else
{
jmc.parse("take $weapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon")
}
}
else
{
if(jmc.GetVar("loyalweap2") == 0)
{
jmc.parse("take $secweapon");
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon")
}
else
{
jmc.parse("wear $weapon");
jmc.parse("wear $secweapon")
}
}
}
}
}
}
jmc.RegisterHandler("Incoming","Disarm()");

Снова эта же ошибка, уже даже не знаю что... Мб я ошибся с if(jmc.Event=="/оружие у вас из рук!$/") в этом примере, но делал даже без него просто используя проверку скрипта на цвет, с использованием #action jmc.

Если кто-то поможет, буду очень признателен!

Добавил! Ржу над собой, тока у меня такие длинные посты...


Снова добавил! Кхе-кхе, изменил имя функиции самого первого скрипта, который у меня до этого выдавал ошибку, терь работает...


function Dizarmfs()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
jmc.parse("take $weapon");
jmc.parse("wear $weapon");
}
}

Зато этого уже для меня не достаточно, не хочу в конфиге много скриптов относящихся к weapons ))) буду делать один!

Удачи!
Craya
а зачем на цвет смотреть? Что то я не догнала

Добавлено ([mergetime]1196293047[/mergetime]):
Проще сделать одну скриптовую функцию в которую буду передоваться оружие которое выбили и там одевать его как надо
Aldaran
Цитата(Craya @ 29 Nov 2007, 03:37)
а зачем на цвет смотреть? Что то я не догнала

Добавлено ([mergetime]1196293047[/mergetime]):
Проще сделать одну скриптовую функцию в которую буду передоваться оружие которое выбили и там одевать его как надо


Ну, в маде котором я играю, неизвестно которое из двух оружий выбили (могут выбить и первое и второе, а сообщение выдаваемое мадом будет одно и то же). А цвет нужен, чтобы не обманывали игроки...Ибо теряешь времени больше, на попытку взять того чего нет на земле и одеть его, чем зловредная 'emo выбил у вас оружие из рук!'. Раньше у меня срабатывал триггер на боевое приглашение! Но, в бою так же можно использовать эмоции и есть мобы которые начинают бой с дизарма, а значит ты не поднимешь оружие. Иногда в спешке ты можешь этого не заметить, и убежать за кучу локаций...В экстренных ситуациях, я вовсе отключаю этот триггер, лучше потерять оружие, чем умереть.

Раньше пользовался при двух оружиях, так, думая что выбиваю по порядку, сначала первое, потом второе, первое оружие которое должны были выбить, при одевании становилось вторым, а бывшее второе смещалось на первую позицию:
take $weapon;wear $weapon;#var secweapon $weapon;#var weapon $secweapon
И оружие менялось

#act {/^выбил оружие у вас из рук!$/} {#if {$prompt = 1} {........}} {weapons}

Но оказалось, что это не так...приходится делать, чтобы одновременно поднимало два оружия и одевало их!
Aldaran
Ну тут от нехрен делать выложу Вам скрипт для записи логов...
Скажете плагиат?!
Ну есть конешна, тока изменил его... Мне так удобно!

function StartLog(dd)
{
m_date = new Date();
var MonthArr = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");

var NName;
var Year = m_date.getYear();
var Month = MonthArr[m_date.getMonth()];
var Day = m_date.getDate();
var Hour = m_date.getHours();
var Min = m_date.getMinutes();

Nname = "[" + ((Hour>9) ? "" : "0")+ Hour + ((Min>9) ? "." : ".0")+ Min + "]" + ".log";

fso = new ActiveXObject("Scripting.FileSystemObject");

var fldrtemp="Logs";
if (fso.FolderExists(fldrtemp)) {}
else { var fldr = fso.CreateFolder("Logs"); }

var fldrtemp="Logs\\" + dd;
if (fso.FolderExists(fldrtemp)) {}
else { var fldr = fso.CreateFolder(fldrtemp); }

var fldrtemp="Logs\\" + dd + "\\" + ((Day>9) ? "" : "0]")+Day+"." + Month+"." + Year;
if (fso.FolderExists(fldrtemp)) {}
else { var fldr = fso.CreateFolder(fldrtemp); }


jmc.output('#log "'+'Logs\\' + dd + '\\' + ((Day>9) ? '' : '0]')+ Day+ '.' + Month+'.' + Year+ '\\' + Nname + '"');
jmc.parse('#log "'+'Logs//' + dd + '//' + ((Day>9) ? '' : '0]')+ Day +'.' + Month+'.' + Year+ '//' + Nname + '"');

}

Хотел выразить особую благодарность в поддержке Неревару.
Спасибо Ромка laugh.gif)

Добавил )) Мб кому-то пригодится, содрать и изменить можна любой скрипт под себя. Вот еще один скриптик, он находит Труп ПЕРСОНАЖА из кучи других трупов мобов (В основном тут использовалось: Имя ПЕРСОНАЖА пишется с большой буквы, название моба с маленькой, если же используется имя моба, то с большой):

function act_corpse(corpse,location)
{
if ( (corpse == "Асигода") || (corpse == "Бамбулы") || (corpse == "Беорна") || (corpse == "Грыша") || (corpse == "Варгана") || (corpse == "Белого клоуна") || (corpse == "Хислопа") || (corpse == "Гормадока Барквина") || (corpse == "Ксантаруса") || (corpse == "ЯсенЯ"))
{
return
}
var symb;
symb = corpse.substr(0,1)
if ((symb >= "А") && (symb <= "Я"))
{
jmc.parse("#drop")
jmc.Showme('[0\;33mТруп [1\;31m'+corpse+'[0\;33m в комнате [1\;37m'+location+'[1\;30m.');
}
}
Aldaran
Интересна!
Создал weapon1.scr и записал в него ниже преведенный скрипт, загрузил, стало работать, удаляешь этот файл, суешь все с него в weapon.scr: выдает ошибку!

Мб если есть var weapon, то нельзя импользовать и *.scr с таким же названием?

function disarmfswd()
{
var color = jmc.Event.substr(0, 9);
if(color == "")
{
if (jmc.GetVar("loyalweap1") == 1)
{
jmc.parse("wear $weapon");
}
else
{
jmc.parse("take $weapon");
}
if (jmc.GetVar("doubleweap") == 1)
if (jmc.GetVar("loyalweap2") == 1)
{
jmc.parse("wear $secweapon");
}
else
{
jmc.parse("take $secweapon");
}
if (jmc.GetVar("loyalweap1") == 1)
{
}
else
{
jmc.parse("wear $weapon");
}
if (jmc.GetVar("doubleweap") == 1)
if (jmc.GetVar("loyalweap2") == 1)
{
}
else
{
jmc.parse("wear $secweapon");
}
}
}

Я извиняюсь за этот адский спам...Просто не встречал еще такого!

КРОВЬ! СМЕРТЬ! СОТОНА!
Бяха
Делимся скриптами, говорим? Ну вот и мои пять копеек:

- Кнопка-Тригер - на одной кнопке висит две операции Сесть и Встать. В маде присутствуют также коврики которые таскаешь с собой и садясь на которые быстрее чёнить регенишь. Соотв-но в скрипт встроено юзание коврика.

(не программер, такшо на структуру не плюваться)

//в конфиге жабы должны быть определены переменные
//sit - определяющая стоите вы(1), сидите(2)
//carp - имя коврика ("леопард", "раковин" или "ковр" )))
//carpis - 0 если нет коврика, 1 есть коврик
//air - "1" если вы под флаем (нужна чтобы при возвращении из сидения вы оказывались "летящим", в статус-окне, а не "стоящим")
//
//также есть переменная showsit - которая выводится в нижние статус-окна и которая показывает ваше положение "сижу", "стою","лечу", "СПЛЮ"
//
//переменная mana_hp определяет на каком из ковриков мы сидим - "мана коврик" или "хп коврик", соответственно нужный и подбирается.

var mana_hp=false;

function frest() //---------------ОТДЫХАТЬ - себе.----------------
{ sit=jmc.GetVar("sit");
carp=jmc.GetVar("carp");
carpetis=jmc.GetVar("carpetis");
if (carpetis==0) //проверка - есть ли вообще коврик
if (sit==0) //проверка - Сижу - стою без коврика
{
jmc.parse("отдыхать");
jmc.SetVar("showsit","сижу");
sit=1;
jmc.SetVar("sit",sit);
mana_hp=false;
}
else if (mana_hp) fmrest()
else {
jmc.parse("встать");
if (air==1) {jmc.SetVar("showsit", "лечу");} else {jmc.SetVar("showsit","стою");}
sit=0;
jmc.SetVar("sit",sit);
}


else
//проверка - Сижу - стою с ковриком
if (sit==0)
{
jmc.parse("бро "+carp+"; отдыхать "+carp);
jmc.SetVar("showsit","сижу");
sit=1;
jmc.SetVar("sit",sit);
mana_hp=false;
}
else
if (mana_hp) fmrest()
else {
jmc.parse("встать; взять все."+carp);
if (air==1) {jmc.SetVar("showsit", "лечу");} else {jmc.SetVar("showsit","стою");}
sit=0;
jmc.SetVar("sit",sit);
};
}

---------------
у меня в промпте выводится постоянно состояние моих денег. СОответственно есть скрипт проверяющий обокрали ли меня или нет
(логично что скрипт ругается при каждой покупке smile.gif smile.gif smile.gif smile.gif smile.gif )

#action {<%1hp %2mp %3mv %4.%5 %6>} {#var money1 %4; #var money1s %5; #scri stoling()} {9} {default}


money1=jmc.GetVar("money1"); //кол-во золота
money1s=jmc.GetVar("money1s");//кол-во серебра

function stoling() //проверка на обокраденность
{ money1=jmc.GetVar("money1");
money1s=jmc.GetVar("money1s");
minus=(money1*1+(money1s*0.01))-money*1;
if (minus<0) jmc.showme("***Вас обокрали на "+Math.floor(minus*100)/100+" золота!!!", "yellow");
money=money1*1+money1s*0.01;
minus=0;
}
Aldaran
По подробнее расскажи про коврики (точнее про 'мана коврик' и 'хп коврик'), игрался в несколько мадов, где использовались коврики/панцири и т.д., но не разу не встречал разделения на хп/мана.

Пропущен скрипт fmrest(), которые присутствовал в frest(), но наверняка использовался если mana_hp=true или mana_hp != false. Пропущена переменная air, типа air=jmc.GetVar("air"). У тебя нету вывода в окно статуса положения переменной showsit, как написано выше, ну эт фигня, я не придираюсь.

А почему ты не упростишь скрипт? Например, вместо, sit=0;jmc.SetVar("sit",sit);, можно сделать jmc.SetVar("sit",0);.

Скрипт с проверкой на воровство денег мобами, конешно работать будет, но увеличивать строку приглашения, думаю, не стоит, спама больше, трафика больше (хотя мелоч), да и крадут мобы не так много...

А так все же спасибо за то что, хоть кто-то делится скриптами, важнее не сами скрипты, а внимание и идеи, которые можно использовать.
Kiber
Цитата(Aldaran @ 28 Nov 2007, 20:12)
Искал... искал... плюнул...

Привет, соАРДИнец)
Скажи, почему-бы просто не поднимать сразу все оружие и не одевать его?
Почему решил разбить на много вариантов?
Случайно не потому, что все параметры (название оружия, флаги) заполняешь вручную, вводишь короткие названия и при подъеме боишься что он больше чем нужно поднимет?
Kiber
Кстати, по поводу производительности скрипта:
Проверка триггером (грубо говоря, точный триггер на имя моба) работает быстрее, нежели проверка JS (сравнивая переменную с именами мобов). тест 500 строк, результаты отличались на 1 секунду из 13.
Так-же сравнивал просто много триггеров и один общий триггер. В рамках 500 строк результат был одинаков. Вывод: в жабе достаточно хорошо написан парсер строки для триггеров, и предпочтительнее использовать внутренний язык жабы, без вкроек на JS.
Так-же сравнивал предельно точные триггеры (со знаками начала и конца строки^$) с обрезками (со знаком только начала строки ^), 500 строк, точные ведут 11:10.
Aldaran
Цитата(Kiber @ 31 May 2008, 16:44)
Скажи, почему-бы просто не поднимать сразу все оружие и не одевать его?
Почему решил разбить на много вариантов?
Случайно не потому, что все параметры (название оружия, флаги) заполняешь вручную, вводишь короткие названия и при подъеме боишься что он больше чем нужно поднимет?

1) Как это просто поднимать все оружие и одевать его?
2) Потому что ты мирный и наверное забыл, что у большенства атакующих лояльное оружие, и бывает такое, что названия двух лоялов разное. Тут проверка на цвет, возможность использования 2х лоялов и 2х оружий.
Параметры оружия вводятся и вручную и с помощью триггера. У меня используются нормальное название предмета, не короткое. Например:
#action {/Вы взЯли в руки трезубец-молнию.$/} {isloyal 0 $loyalweap2;#var weapon Threecog;#stat 1 { $weapon($secweapon)} b cyan, gray} {5} {weap}
#action {/Вы взЯли в руки Падавитель, Танец Смерти.$/} {isloyal 1 $loyalweap2;#var weapon Nozober;#stat 1 { $weapon($secweapon)} b cyan, gray} {5} {weap}

Цитата(Kiber @ 31 May 2008, 20:57)
Так-же сравнивал просто много триггеров и один общий триггер. В рамках 500 строк результат был одинаков. Вывод: в жабе достаточно хорошо написан парсер строки для триггеров, и предпочтительнее использовать внутренний язык жабы, без вкроек на JS.

Возможно, но скрипты позволяют писать, что-то намного сложнее, чем триггера и т.д. Парсер триггеров работает хорошо, но строка при попадании в триггер лишается расцветки, чтобы было возможно не забивать себе голову цветами при их написании, а если ловить через скриптовое событие, там строка не обрабатывается, и делать можно что угодно.
Kiber
Да можно просто исключать из обработки все серые строки, в чем проблема. Ну или в начало серой строки добавлять признак, который исключит эту строку из обработок.
Ты все-таки не ответил на вопрос: ты все флаги и параметры вручную заполняешь? Ну, хоткеями, алиасом, но вручную?
Aldaran
Цитата(Kiber @ 02 Jun 2008, 07:46)
Да можно просто исключать из обработки все серые строки, в чем проблема. Ну или в начало серой строки добавлять признак, который исключит эту строку из обработок.
Ты все-таки не ответил на вопрос: ты все флаги и параметры вручную заполняешь? Ну, хоткеями, алиасом, но вручную?

Да, конечно )))
Kiber
не могу тебе написать ПМ. Не знаю почему, может акк не активирован...
В общем, если хочешь - я кину тебе в асю пару строк скрипта, который точно по экипировке определяет точное название оружия. И по состоянию переменных определяет - нужно поднимать 2 оружия или одно. Вручную можно дописать JS функцию, натравливать ее на название оружие, и по совпадениям устанавливать флаг лояльности/проклятости оружия.
В общем, чтобы все было автоматически.
icq
Aldaran
Спасибо за предложение. Скрипт, я могу и сам написать, но у меня нет идей написания...
Бяха
Цитата(Aldaran @ 29 May 2008, 08:11)
Пропущен скрипт fmrest(),... Пропущена переменная air,..У тебя нету вывода в окно статуса положения переменной showsit,
ну да. это я убрал дабы не захламлять пост. Но я думаю если кому надо - попросят и я допишу.

Цитата(Aldaran @ 29 May 2008, 08:11)
А почему ты не упростишь скрипт? Например, вместо, sit=0;jmc.SetVar("sit",sit);, можно сделать jmc.SetVar("sit",0);.
Наверно на случай если переменная sit будет использоваться еще раз в процедуре не выходя из нее.

Цитата(Aldaran @ 29 May 2008, 08:11)
...да и крадут мобы не так много...
ты заявляешь это не узнав даже для какого мада это было написано? опрометчиво smile.gif.
Бяха
первый Скрипт который одному хоткею вешает 2 действия - одеть вещь дающую флай, и снять. Неудобство - ручками приходится менять в конфиге название флаевской и сменной шмоток, если они поменялись.

второй Скрипт - на одном хоткее смена 2-х видов промпта: с экспой и с названиями комнаты.


function fair()
//------------Лечу-Стою-------------
{
if (air==0)
{
jmc.parse("од змей");
jmc.SetVar("showsit", "лечу");
}
else
{
jmc.parse("од тускл");
jmc.SetVar("showsit", "стою");
}
air=1-air;
jmc.SetVar("air",air);
}
------------------------------
function fprompt() //смена промпта для получения инфо об экспе
{ var textsend="";
textsend=((activp==1) ? "PROMPT <{R%h/%Hhp{x {M%m/%Mmp{x %vmv {Y%g.%s{x %X {M%t{x>" : "PROMPT <{R%hhp{x {M%mmp{x %vmv {Y%g.%s{x {C[%r]{x {M%t{x>");
activp=1-activp;
jmc.parse(textsend);
}


Детский скрипт автоматизирующий обмен серебра на золото

#alias {_мм} {#scri changemoney()} {default}

function changemoney() //серебро на золото
{
jmc.send("дать "+money1s+" монет меняла");
}



Скрипты на присвоение переменных ... ничего особенного.

function fnodog() //-----------очара мертва-------------
{ dog="--";
dogis=0;
dogsleep=0;
jmc.SetVar("dog",dog);
jmc.SetVar("dogis",dogis);
jmc.SetVar("dogsleep",dogsleep);
}

function fnodogcarp() //нет коврика для очары
{ dogcarp="--";
dogcarpis=0;
jmc.SetVar("dogcarp",dogcarp);
jmc.SetVar("dogcarpis",dogcarpis);
}

//т.к. на ковриках могут спать и очары, то и для нее отдельный коврик
function fdogcarp(dogcarp) //есть коврик для очары
{ dogcarpis=1;
jmc.SetVar("dogcarp",dogcarp);
jmc.SetVar("dogcarpis",dogcarpis);
}


Добавлено ([mergetime]1212580587[/mergetime]):
Добавочка:

#alias {слуга} {#var dog %1« #var dogis 1« статпок3} {default}
#alias {слуга0} {#scri fnodog()« статпок3} {default}
#alias {статпок3} {#scr jmc.SetStatus(1, "$dog $dogcarp" , "light red")} {default}
#alias {статпок} {#scr jmc.SetStatus(1, "$food $space $cont $light", "white")« #scr jmc.SetStatus(2, "$carp $mcarp $showsit F=$fight", "light blue")« #scr jmc.SetStatus(3, " $speak1, $speak2, $speak3", "b green")} {default}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.