Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

DF2 :: ФОРУМЫ _ МАД-клиенты _ jmc :: scripting

Автор: Ennin 22 Jan 2007, 23:21

тема создана для обсуждения создания конфигов под jmc. скриптинг на макросах, vbscript, jscript, perl.

Автор: Danilych 24 Jan 2007, 20:08

Конешно можете по праву считать меня краном но никогда не использовал скрипты. Может ктонить показать хоть какието простейшие основы и объяснить как они ваще пишуццо? А там мож осилю ченить. А то очень давно хочеццо научиться.

Автор: gamecreator 24 Jan 2007, 21:39

я раз писал скрипт чтобы при открывании дверей 2 буквы вводить (против всяких там "earring не является сумкой"): o [направнение]
но он у меня сразу же при втором запуске мада заглючил. может из-за того, что я его не туда сохранил.

может создадим тему "обучение" или в этой кто-нить расскажет?

Автор: Ennin 25 Jan 2007, 00:20

основы скриптинга на "тинтине" и js расписаны на сайте-нубам

Автор: Shaidar Haran 25 Jan 2007, 07:44

А мну бейсик нравится smile.gif Он к регистру не чувствителен - это большой плюс для удобства кодинга.

Автор: Ennin 25 Jan 2007, 08:16

ага, а еще он весь такой расплывчатый и склизкий

Автор: gamecreator 25 Jan 2007, 18:31

жаль С++ нет

Добавлено ([mergetime]1169739082[/mergetime]):
а коментить строки как-то можно?

Автор: Ennin 25 Jan 2007, 18:46

ГДЕ?

Автор: gamecreator 25 Jan 2007, 18:51

ну в скриптах под жабу

Автор: Ennin 25 Jan 2007, 19:10

если ты про макросы, то RTFM!!! ##, //, #nop

Автор: Aldaran 15 Jul 2007, 08:38

Здравствуйте! laugh.gif

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

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

Автор: Ennin 15 Jul 2007, 10:32

возможно
строку дропаешь (#logpass)
после чего добавляешь свою строку (#logadd)

Автор: Aldaran 30 Jul 2007, 12:58

Здравствуйте!

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

У меня:
{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 01 Aug 2007, 10:59

я не воткнул до конца для чего скрипт... но судя по всему - чтобы делать дампы переменных. посему посоветую #sos

Автор: Aldaran 01 Aug 2007, 11:32

Цитата(Ennin @ 01 Aug 2007, 11:59)
я не воткнул до конца для чего скрипт... но судя по всему - чтобы делать дампы переменных. посему посоветую #sos


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

В команде #sos так и не разобрался... Пользуюсь старым способом...

Автор: Ennin 01 Aug 2007, 16:28

ну во-первых, надо разбираться в методах 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 09 Aug 2007, 11:46

Всем привет. Как я понял, JMC умеет работать с окнами, но так эту возможность и ниасилил до конца. Хотелось бы получить совет специалиста.
Суть такая - я хочу создать окно, в которое выкидывались бы клановые сообщения (вместо основоного). Если есть такая возможность - объясните, пожалуйста, как ее реализовать. Заранее благодарен.

Автор: Ennin 12 Aug 2007, 09:47

сначала надо окно подготовить. #wshow 1 show скажем
можно приткнуть окно к границам окна. если хочется, чтоб оно висело - то #wdock 1 disable, #wpos 1 x y
все.
теперь настраиваем выкидыш строк в окно
#act {^[КЛАН]%0} {#woutput 1 [clan] %0}
если хочется, чтобы в основном окне клановые не показывались, то добавляем дроп
#act {^[КЛАН]%0} {#drop;#woutput 1 [clan] %0}
следует отметить, что таким образом сообщения будут выводиться обесцвеченными. для вывода цветных сообщений надо воспользоваться уже скриптовыми средствами

Автор: Rayen 16 Aug 2007, 19:45

спасибо за разъяснение. учту в разработках. тогда можно еще один вопрос - где можно найти НОРМАЛЬНЫЙ мануал по JMC? ибо ни в оригинальном хелпе, ни в архиве, который на сайте валяется, ничего не сказано ни, к примеру, про "#drop" ни про ^. а я так понимаю - на этом сюрпризы не заканчиваются. хочу все знать, как говорится smile.gif. буду вдвойне признателен за информацию по внутренним переменным JMC, которые можно использовать в скриптах. спасибо.

Автор: GrayMage 16 Aug 2007, 22:12

#drop в хелпе есть...
^ пришло к нам с ММС.

Автор: Ennin 17 Aug 2007, 08:36

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

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

Автор: Rayen 17 Aug 2007, 10:06

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


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

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


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

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

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

Код
#substitute {;} { }


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

Нафлудил что-то я, простите если что )

Автор: Aldaran 28 Nov 2007, 19:12

Здравствуйте!
Помогите... 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 29 Nov 2007, 02:37

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

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

Автор: Aldaran 29 Nov 2007, 10:04

Цитата(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 29 Nov 2007, 10:30

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

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 29 Nov 2007, 17:07

Интересна!
Создал 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");
}
}
}

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

КРОВЬ! СМЕРТЬ! СОТОНА!

Автор: Бяха 27 May 2008, 11:25

Делимся скриптами, говорим? Ну вот и мои пять копеек:

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

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

//в конфиге жабы должны быть определены переменные
//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 29 May 2008, 08:11

По подробнее расскажи про коврики (точнее про 'мана коврик' и 'хп коврик'), игрался в несколько мадов, где использовались коврики/панцири и т.д., но не разу не встречал разделения на хп/мана.

Пропущен скрипт 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 31 May 2008, 15:44

Цитата(Aldaran @ 28 Nov 2007, 20:12)
Искал... искал... плюнул...

Привет, соАРДИнец)
Скажи, почему-бы просто не поднимать сразу все оружие и не одевать его?
Почему решил разбить на много вариантов?
Случайно не потому, что все параметры (название оружия, флаги) заполняешь вручную, вводишь короткие названия и при подъеме боишься что он больше чем нужно поднимет?

Автор: Kiber 31 May 2008, 19:57

Кстати, по поводу производительности скрипта:
Проверка триггером (грубо говоря, точный триггер на имя моба) работает быстрее, нежели проверка JS (сравнивая переменную с именами мобов). тест 500 строк, результаты отличались на 1 секунду из 13.
Так-же сравнивал просто много триггеров и один общий триггер. В рамках 500 строк результат был одинаков. Вывод: в жабе достаточно хорошо написан парсер строки для триггеров, и предпочтительнее использовать внутренний язык жабы, без вкроек на JS.
Так-же сравнивал предельно точные триггеры (со знаками начала и конца строки^$) с обрезками (со знаком только начала строки ^), 500 строк, точные ведут 11:10.

Автор: Aldaran 01 Jun 2008, 21:24

Цитата(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 02 Jun 2008, 06:46

Да можно просто исключать из обработки все серые строки, в чем проблема. Ну или в начало серой строки добавлять признак, который исключит эту строку из обработок.
Ты все-таки не ответил на вопрос: ты все флаги и параметры вручную заполняешь? Ну, хоткеями, алиасом, но вручную?

Автор: Aldaran 02 Jun 2008, 09:06

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

Да, конечно )))

Автор: Kiber 02 Jun 2008, 17:49

не могу тебе написать ПМ. Не знаю почему, может акк не активирован...
В общем, если хочешь - я кину тебе в асю пару строк скрипта, который точно по экипировке определяет точное название оружия. И по состоянию переменных определяет - нужно поднимать 2 оружия или одно. Вручную можно дописать JS функцию, натравливать ее на название оружие, и по совпадениям устанавливать флаг лояльности/проклятости оружия.
В общем, чтобы все было автоматически.
icq

Автор: Aldaran 02 Jun 2008, 19:21

Спасибо за предложение. Скрипт, я могу и сам написать, но у меня нет идей написания...

Автор: Бяха 04 Jun 2008, 14:32

Цитата(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.

Автор: Бяха 04 Jun 2008, 14:56

первый Скрипт который одному хоткею вешает 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}

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)