чит Портал Online игры Lineage 2

Объявление

Внимание Мы вернулись

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Команды скриптов

Сообщений 1 страница 4 из 4

1

В этой статье рассмотрим команды скриптового языка L2Walker

Основные команды:

GOHOME() \Команда возврата в город после сметри.

SAY() \Писать что-либо в окне чата.

JMP() \Переход к метке LABEL(Текст) где текст в кавычках такой же.

CALL() \Вызов подпрограммы. Переход к LABEL() где текст в кавычках такой же.

LABEL() \Обозначает метку для перехода по CALL() или JMP().

DELAY(x) \Приостановка скрипта, x = милисекунды.

Pause(x) \Пауза, x = милисекунды.

RETURN() \Выход из подпрограммы.

EXIT() \Выход из скрипта.

Перемещение:

MOVETO(x,y,z) \Идти в точку с координатами x,y,z .

Предметы:

ITEMCOUNT(Название предмета[ID=#],<,1)

{

}

\Подсчитывает количество указанных предметов с условиями <, >, = и выполняет скрипт в фигурных скобках.

USEITEM(Название предмета[ID=#]) \Использует предмет.

BuyItem(Название предмета[ID=#],#) \Покупает предме.

BuyItem(Название предмета[ID=#],#;Название предмета[ID=#],#) \Покупает за раз более одного предмета (можно указать много предметов через точку с запятой).

SavelItem(Название предмета[ID=#],#) \Помещает предмет в хранилище (Warehouse).

SavelItem(Название предмета[ID=#],#;Название предмета[ID=#],#) \Помещает несколько предметов в хранилище (Warehouse).

LoadItem(Название предмета[ID=#],#) \Забрать предмет из хранилища.

LoadItem(Название предмета[ID=#],#;Название предмета[ID=#],#) \Забрать несколько предметов из хранилища. # - само собой количество.

NPC's:

NPCSEL(Имя NPC[ID=#]) \Выбрать NPC.

NPCDLG(Имя NPC[ID=#]) \Открыть диалог с NPC.

DLGSEL(Диалог) \Выьрать пункт диалога [пример: DLGSEL(Buy)].

StrInDlg(Диалог)

{

}

\Проверяет присутствует ли фраза в диалоге. (например, Thank You!) Если да, то испольняеца кусов скрипта в фигурных скобках ({}).

Параметры персонажа:

ChangeWaitType(x)

\Сменить состояние с "сидеть" на "стоять" и наоборот

x = 0 Сесть

x = 1 Встать.

CharStatus([CHP|CMP|HP|MP|WEIGHT|LV|SP|RACE|STAND]

,[>=|>|==|!=|<|<=],число)

{

}

\CHP = Здоровье персонажа

CMP = Мана персонажа

HP = Здоровье (%)

MP = Мана (%)

WEIGHT = Загрузка (%)

LV = Уровень (вожможно)

SP = Хрен знает что такое

RACE = Это еще менее понятно

STAND = Проверка сидишь или стоишь

...,==,0) Сидишь

...,==,1) Стоишь (может быть 0 и 1 надо поменять местами).

PosInRange(x,y,z,дистанция)

{

}

\Проверка находится ли заданная точка в пределах досягаемости (дистанция). Если да, то выполняется кусок скрипта в фигурных скобках ({}).

PosOutRange(x,y,z,дистанция)

{

}

\То же самое, но условие верно, если точка все досягаемости.

SET(FIGHTSTART) \Начинает бой.

SET(FIGHTSTOP) \Останавливает бой.

FAQ:

Скрипты чаще всего пишутся в всем известной программе "Блокнот" . Можно ингеймом , но блокнот всервно придется использовать . Так что рекомендую для файлов с расширением .SEC выставить опцию открывать их с помощью Блокнота .

Вот напишем маленький скрипт на перемещение . Очень часто такие скрипты нужны , когда вы многократно бегаете по одному и тому же маршруту .

Для перемещений испоьзуется команда - MOVETO

Вначале снимаем точки . Это можно сделать с помощью команды /loc . Но это конечно неудобно . Удобней всего это сделать с помощью Ингейма . Есть там раздел в опциях Маке Скрипт и нажав Рек вы запомните команды и действия . Получаем набор команд , например

MOVETO(14936,16005,-4411)

MOVETO(16364,15760,-4364)

MOVETO(16741,15466,-4276)

MOVETO(16785,15046,-4163)

M OVETO(16109,14679,-3954)

MOVETO(15971,14338,-3815)

MOVETO(16115,14037,-3755)

MOVETO(16510,13572,-3751)

MOVETO(20963,11700,-3748)

MOVETO(22828,10811,-3745)

MOVETO(24107,10053,-3654)

MOVETO(25744,9219,-3694)

MOVETO(27702,7609,-3752)

Теперь очень важный момент ! Сохраняем скрипт блокнотом например с названием rewty6854.txt . Только надо обязательно сохранять в кодировке Юникод !!!! Иначе скрипт не будет работать . После того как вы сохранили , меняем расширешие файла с .txt на .SEC . Потом скрипт надо поместить в папку script Волкера или Ингейма .

Небольшой полезный совет .

У вас будет много скриптов и вы рано или поздно начнете в них путаться . Скрипты улучшаются , переделываются и прочее . Так для того , чтобы не путаться в начале скрипта полезно писать комментарии . Для этого в самом начале строки пишется // , например

//-------------------------------------------------

//

// скрипт на перемещение

// из А в Б

// версия 0.01 от 07.01.2006

//

//--------------------------------------------------

Когда у скрипта будет такая шапка , то вы уже не запутаетесь . Полезно и комментарии внутри скрипта писать , для себя , чтобы легче было , когда вы будете улучшать скрипт .

Теперь напишем скрипт посложнее , например на крафт ССД.

Чтобы скрафтить соску нужна команда USEITEM .

Тоесть мы использем предмет , в данном случае - рецепт .

Вот и пишем так

USEITEM(Recipe: Soulshot: D Grade[ID=1804])

Но этого мало . После этой команды отроется рецепт , но чтобы соска скрафтилась , надо дать команку - Креате

DLGSEL([Create])

Теперь такое . На выполнение команд требуется время . Так чтобы скрипт не сбивался после комант на чтото надо обязательно ставить задержку . Тогда следующая команда будет выполнена , сбоев небудет . Задержку экспериментально определяю . Для крафта сосок вполне достаточно 0.5-1 сек . В скриптах задержка пишется в миллисекундах .Поэтому пишем

USEITEM(Recipe: Soulshot: D Grade[ID=1804])

DELAY(500)

DLGSEL([Create])

DELAY(500)

Вот уже есть скрипт . Но по нему будет скрафчена одна соска и он выключится . Надо заставить скрипт повторяться , зациклить его так сказать . Для этого в начале скрипта пишем метку , например - LABEL(metka005) . Тогда по команде

JMP(metka005) скрипт вернется вна эту метку и снова будут повторяться действия

LABEL(metka005)

USEITEM(Recipe: Soulshot: D Grade[ID=1804])

DELAY(500)

DLGSEL([Create])

DELAY(500)

JMP(metka005)

Вот уже готовый рабочий скрипт . С его помощью уже можно крафтить Но ...

Надо его немного улучшить , об этом будет немного дальше .

А пока немного о другом .

Названия предметов и их ИД для разных серверов могут быть РАЗНЫЕ !!! Разными могут быть и фразы в диалогах , например как в даноом случае - [Create]

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

Будем улучшать скрипт

.

Вначале надо решить что еще нужно , а потом собрать до кучи .

Делаем шапку , для чего , я уже выше обьяснял

//-----------------------

//

// крафт ССД

//

//-------------------------

При крафте сосок расходуется мана . поэтому крафтить надо сидя , быстрее мана регенерится . Пишем команду

CharStatus(STAND,==,1)

{

ChangeWaitType(0)

DELAY(1500)

}

Что она делает . Проверяет условие , сидит или стоит чар . Если стоит , то будут выполняться команды в скобках . Иначе эти команды будут пропущены . Вот чара посадили .

Теперь в процессе крафта расходуется мана . Надо иметь 30 и больше маны для крафта ССД . Поэтому напишу такое условие

LABEL(metka010)

CHARSTATUS(CMP,<,31)

{

DELAY(1000)

JMP(metka010)

}

Что будет происходить . Если маны меньше 31 , то скрипт подождет секунду и снова возратится на проверку этого условия . И только когда маны достаточно он будет работать дальше .

В процессе крафта расходуются кристаллы и соул оре . Поэтому добавлю такую поверку

ITEMCOUNT(Crystal: D Grade[ID=1458],==,0)

{

EXIT()

}

ITEMCOUNT(Soul Ore[ID=1785],==,0)

{

EXIT()

}

Эти проверки если нету кристалов или соулов , то они выключают скрипт командой EXIT()

Ну почти все , но добавлю еще одну проверку . Бекпак не резиновый . Рано или поздно может переполниться . Вот добавлю такую проверку . Допустим этот скрипт будет у крафтера , который и крафтит и продает одновременно . Если веса больше чем 79% то скрипт тоже зациклится и будет ждать , пока купят соски

LABEL(metka015)

CHARSTATUS(WEIGHT,>=,79)

{

DELAY(5000)

JMP(metka015)

}

А теперь соберу все до кучи )))

Вот готовый скрипт на крафт сосок ССД

//--------------------------------- // // скрипт на крафт ССД // // made by Zzz // //--------------------------------- CharStatus(STAND,==,1) { ChangeWaitType(0) DELAY(1500) } LABEL(metka005) ITEMCOUNT(Crystal: D Grade[ID=1458],==,0) { EXIT() } ITEMCOUNT(Soul Ore[ID=1785],==,0) { EXIT() } LABEL(metka010) CHARSTATUS(CMP,<,31) { DELAY(1000) JMP(metka010) } USEITEM(Recipe: Soulshot: D Grade[ID=1804]) DELAY(500) DLGSEL([Create]) DELAY(500) LABEL(metka015) CHARSTATUS(WEIGHT,>=,79) { DELAY(5000) JMP(metka015) } JMP(metka005)

Вот все и собрал . Конечно можно немного и этот скрипт улучшить , сделать красивее , но уже имеем 100% рабочий и хороший скрипт для крафта ССД .

Точно также пишутся и другие скрипты на крафт . Можно писать на крафт не одного вида сосок , а например , чтобы чар барыга , отслеживал , сколько у него разного типа сосок и при необходимисти крафтил то , что продано .[i][b]

Думаю очень важно рассказать про тек сказать грамматику , про синтаксис языка скриптов для Валкера и прочие асы

Снова повторяю одну очень важную вещь . Скрипты пишутся в Блокноте . Потом сохраняются В КОДИРОВКЕ ЮНИКОД !!! , а потом эти файлы перемеиновываются , меняем расширение файла .txt на .SEC

Когда скрипт запускается , он начинает работать с первой строчки , потом вторая и так далее , пока строчки не закончатся . Это про скрипт без развлетлений ( нету в нем команд JMP и CALL ) . Скрипт также останавливается после команды EXIT() . Если команда написана неправильно , то скрипт может или остановиться или пропустить эту команду или неправильно выполнить что-то . Так что написать скрипт это полдела , даже меньше - четверть дела , а потом его надо отладить и исправить ошибки . Пустые строчки в скриптах пропускаются , так что их можно использовать , чтобы скрипт более тек сказать понятным был . Также не читаются строчки , которые начинаются на // . Это так пишутся комментарии в скриптах . Советую этим пользоваться , поверьте , вам же легче будет потом в вашем же скрипте разобраться .

Про большие и маленькие буквы . Для скриптов они не имеют значения . Например такие команды MOVETO , MoveTo и moveto для скрипта это одно и то же . Лично я всегда пишу команды большими буквами , так все наглядней получается .

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

Простые скрипты без развлетлений ( например на перемещение ) конечно бывают нужны . Но гораздо чаще есть необходимость в скриптах , где есть равлетвления в алгоритме .

Для этого в языке скриптов есть команды JMP(*****) , CALL(*****) а также различные команды - проверки на условия .

Раличия между JMP(*****) и CALL(*****) . После команды JMP(*****) скрипт просто перейдет к строчке LABEL(*****) , где ***** - какое-то сочетание букв или цифр , но точно такое же как и в команде JMP !!! А вот по команде CALL(*****) немного по другому будет . Скрипт перейдет к метке JMP(*****) , потом будет выполнять команды дальше после этой метки , но если встретит команду RETURN() , то он вернется к строчке , в которой была команда CALL(*****) и будет выполнять уже команды после этой строчки . Чтото это типа подпограммы , но без параметров . Очень удобно и часто полезно это использовать .

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

Это команды POSINRANGE(....) , ITEMCOUNT(...) , CHARSTATUS(...) и другие . Как они работают . Условие пишется в круглых скобках этих команд , например CHARSTATUS(CHP,<=,0) . После этих команд надо в фигурных скобках написать те команды , которые будут выполняться , когда условие верно . Если условие неверно , то эти команды будут пропущены и будут выполняться команды посде фигуных скобок . Примерно это так выглядит

ПРОВЕРКА(условие)

{

...

команды , выполняемые , когда условие верно

иначе они пропускаются

...

}

....

Теперь очень важный момент , который многим кровь попортил .

Не используйте проверку в проверке , типа такого

ПРОВЕРКА1(....)

{

...

ПРОВЕРКА2(....)

{

...

}

....

}

....

В таких случаях скрипт будет работать неправильно . Ну вот такая особенность в языке Волкера . Правильно надо делать так

ПРОВЕРКА1(....)

{

...

}

....

ПРОВЕРКА2(....)

{

...

}

....

Отредактировано GaRaMoT (2009-05-24 15:34:43)

0

2

+20 постов за инфу

0

3

я 1 понять не могу...как мне сделать так что бы чар в чат кричал, а не писал в белый чат?

0

4

не пашет SAY! игнорит эту строку и идет дальше)

З.Ы.
я так понимаю, средствами ИГбота невозможно реализовать крик в шаут
друг что-то говорил про пакеты...но я хз как это.

Отредактировано GaRaMoT (2009-05-24 19:23:00)

0