.::KUVALDA forum

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

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


Вы здесь » .::KUVALDA forum » L2Walker&Co » Мануал по скриптингу для L2Walker


Мануал по скриптингу для L2Walker

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

1

Долго лазил по и-нету и вот что нарыл по теме из разных источников:
Скрипт нужно создавать в блокноте, сохранить в кодировке "Юникод".
Затем созданный скрипт нужно поместить в папку \eL2WalkerFree\SCRIPT.
Для запуска скрипта на исполнение выделяем нужный скрипт на вкладке Script программы eL2WalkerFree и жмём .Run.

Код:
Начнём с того что представлено в теме " Основные команды" 

Большинство ботоводов просто напрочь не хочет вникнуть хоть немного в судь скрипта, и просто ТУПО копируют из той темы готовые примеры скрипта. 

Ну так вы ничему не научитесь это ФАКТ. 

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

Достать их в свободном доступе, будет очень и очень сложно. Хотя в написании такого дела, нет ничего замысловатого. 

Я просто помогу создать подобные скрипты, тем кто хочет учиться. 

================================================== ===== 

Начнем с самого главного: 

команда LABEL() первоначально ставиться в начало скрипта, ( говорю упрощённо что бы все было вполне понятно) 

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

координаты думаю всем извесно как добывать MOVETO(x,y,z) 

Далее команда CHARSTATUS() Служит для определённых проверок, таких как лвл, сп, мп, лоад, и прочее. (см. тему Основные команды) 

Далее: Команда POSINRANGE() Служит для проверки местоположения. Ставиться для того что бы бот не терялся на месности. 

Подробнее о LABEL() Служит как начало скрипта, или под скрипта, работает до команды JMP() после которой скрипт начнеться с той метки, которая будет указанна в скобках JMP() 

Команда JMP() делает прыжок на метку LABEL() Где текст в скобках совпадает с JMP() 

LABEL(Go) 
JMP(Go) 

Залог успеха в написании крупно габаритных скриптов, делаеться так. вы должны помнить что основного скрипта будет всего лишь несколько строчек, а всё остальное будут сплошные под программы. такие как магазины. длвлы, телепорты, ВХ, смена разных мест, и многое другое. 

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

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

Далее: Что бы успешно продавать вещи в магазин,( зы: не в ВХ, с ним отдельный разговор.) 

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

Выглядит это так: 

ITEMCOUNT(Gloves[ID=49],>,0)// значёк >, и далее следующая цифра"0" показывают условие проверки итема "Больше или равно 0" и сразу же выполняеться скрипт из фигурных скобок, {} следующий за каждой проверкой. 

ITEMCOUNT Служит для проверки необходимого предмета. 

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

ну в общем так выглядит проверка и продажа. 

допустим начальная точка: 

LABEL(sell) 
ITEMCOUNT(Gloves[ID=49],>,0) 
{ 
SELLITEM(Gloves[ID=49],#) 
MSG(вещь продана) 
JMP(sell) 
} 

И тд, и тп, по скольку вещей и хлама продавать нужно много разных типов, то и проверки на каждый итем ставить придеться в скрипт, одну за другой. 

LABEL(sell) 
ITEMCOUNT(Brandish Blade[ID=2010],>,0) 
{ 
SELLITEM(Brandish Blade[ID=2010],#) 
MSG(вещь продана) 
JMP(sell) 
} 
ITEMCOUNT(Gloves[ID=49],>,0) 
{ 
SELLITEM(Gloves[ID=49],#) 
MSG(вещь продана) 
JMP(sell) 
} 
ITEMCOUNT(Animal Bone[ID=1872],>,0) 
{ 
SELLITEM(Animal Bone[ID=1872],#) 
MSG(вещь продана) 
JMP(sell) 
} 

SELLITEM() Диалог с НПС обратите внимание на символ # Ставиться для того что бы бот продавал все вещи указанного типа. 

зы: Заострите на этом внимание. Уверен, кто то напутает всё равно 

так же заострите внимание на перевод диалогов с НПС, если диалог русский то писать у НПС следует на русском DLGSEL(Продать) или на английском DLGSEL(sell) Зависет от перевода сервера. 

MSG() В скобках у неё вы пишите напоминание или то что скрипт делает, делаеться для того что бы вы знали что часть скрипта успешно сработала. 

DLGSEL() Открывает диалог с НПС, указанный в его скобках. 

SET(FIGHTSTOP) Необходим для остановки боя, в случае если бот помер или использует в скрипте ГК или переходит куда то. Но только по сценарию скрипта, то бишь самим тыркать бегин комбат не нужно 

CharStatus(STAND,==,0) Проверка бота "сидит, или стоит" если сидит то кусок скрипта из фигурных скобок после проверки. 

ChangeWaitType(1) Команда для бота "Встать" не смотря на выставленные настройки в самом боте. 

CharStatus(WEIGHT,>=,30.00%) Проверка вашей сумки, если допустим 30.00% то выполняеться кусок скрипта из фигурных скобок, следующий после этой проверки. 

зы: Загрузку сумки писать строго в % 

DELAY() Время в мили-секундах в промежутках в скриптах. 1000 равна одной секунде. 

GOHOME() Возвратиться в город. 

USEITEM() применить указанный итем в скобках. 

зы: Может быть что угодно, от банки до соул-бов-а 

зы: Для каждого применения выставляеться отдельная команда. То бишь что бы не писать все действия в одну строчку. (работать не будет тогда) 

теперь определяем основной скрипт: 

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

LABEL(START) 
SET(FIGHTSTOP) 
CharStatus(STAND,==,0) 
{ 
DELAY(10000) 
ChangeWaitType(1) 
DELAY(2000) 
JMP(START) 
} 
CharStat us(WEIGHT,>=,30.00%) 
{ 
CALL(sell) 
} 
LABEL(LVL) 
CharStatus(LV,>=,21) 
{ 
CALL(Go21) 
} 
CharStatus(LV,>=,18) 
{ 
CALL(Go18) 
} 
LABEL(Go 18) 
POSINRANGE(11052,16907,-4688,4000) 
{ 
MOVETO(11147,16936,-4688) 
MOVETO(10803,17014,-4641) 
MOVETO(10316,17121,-4610) 
MOVETO(9613,172 67,-4610)//Может быть сколько угодно, смотря куда вы идете, так же можно вставить не только координаты. Допустим использовать ГК или еще чего то. 
MOVETO(8777,17419,-4610) 
MOVETO(7906,17632,-4438) 
MOVETO(1149,22549,-3413) 
} 
MSG(На место кача пришел) 
SET(FIGHTSTART) 
LABEL(Check1) 
CHARSTATUS(CHP,<=,0) 
{ 
SET(FIGHTSTOP) 
DELAY(5000) 
GOHOME() 
DELAY(10000) 
JMP(START) 
} 
CharSt atus(LV,>=,21) 
{ 
USEITEM(Scroll of Escape) 
DELAY(20000) 
JMP(START) 
} 
CharStatus(WEIGHT,>=,30.00%) 
{ 
USEITEM(Scroll of Escape) 
DELAY(20000) 
JMP(START) 
} 
JMP(Check1) 
LABEL(Go21) 
POSINRANGE(11052,16907,-4688,4000) 
{ 
MOVETO(11147,16936,-4688) 
MOVETO(108 03,17014,-4641) 
MOVETO(1149,22549,-3413) 
} 
MSG(На место кача пришел) 
SET(FIGHTSTART) 
LABEL(Check2) 
CHARSTATUS(CHP,<=,0) 
{ 
SET(FIGHTSTOP) 
DELAY(5000) 
GOHOME() 
DELAY(10000) 
JMP(START) 
} 
CharSt atus(LV,>=,22) 
{ 
USEITEM(Scroll of Escape) 
DELAY(20000) 
JMP(START) 
} 
CharStatus(WEIGHT,>=,30.00%) 
{ 
USEITEM(Scroll of Escape) 
DELAY(20000) 
JMP(START) 
} 
JMP(Check2) 
LABEL(sell) 
MOVETO(11902,15751,-4581) 
LABEL(sel)// Обратите внимание что sell и sel у меня совершенно разные команды. 
NPCSEL(Vollodos[ID=7137]) 
DELAY(500) 
NPCDLG(Vollodos[ID=7137]) 
DELAY(500) 
DLGSEL(Продать) 
ITEMCOUNT(Short Leather Gloves[ID=1119],>,0) 
{ 
SELLITEM(Short Leather Gloves[ID=1119],#) 
MSG(вещь продана) 
JMP(START) 
} 

Итак, вот вам небольшой пример автоматического скрипта, Всё предельно просто. 

В этом скрипте мы разобрали с вами как собираеться, и работает скрипт различных действий. В нашем случае смена мест кача и использование магазина. 

Пишите здесь если вам что либо не ясно. 

ЗЫ: Некопируйте ничего с этой темы, всё здесь представлено чисто как ознакомление. 

Ну успехов. 

================================================== = 
З.Ы. ПАРУ ПРИМЕРОВ 
================================================== = 
Вот несколько примеров использования команд в скрипте: 
скрипт на быстрый запуск СОЕ (это чтобы неискать его в рюкзаке когда там много всего ) 

Цитата: 
LABEL(start) // ставим метку начала скрипта 
USEITEM(Scroll of Escape[ID=736]) //использовать Scroll of Escape 
MSG(СОЕ использовал) // выдаст надпись в поле SYS "СОЕ использовал" 
EXIT() // выход из скрипта 

скрипт на путь на место кача с последующим возвратом (ну это если помер) 

Цитата: 
LABEL(start) // начало скрипта 

Цитата: 
CharStatus(STAND,==,0) // проверка сидит перс или стоит 
{ 
MSG(Хоре сидеть) // ну это так от себя 
ChangeWaitType(1) // команда бота ВСТАТЬ 
DELAY(1500) // ожидание пока бот встанет 
JMP(Go) // перепригиваем на метку LABEL(Go) 
} 

это надо на случай если после смерти у бота было мало ХП и в настройках бота стоит содиться. Просто если бот сидит то он побежать несможет 
работает так: проверяем на сидит-ли бот, если сидит то выполняем скрипт в фигурных скобках, если несидит перепрыгиваем на метку LABEL(Go) 

Цитата: 
MSG(НЕ СИЖУ!) // а это чтобы знать что скрипт сработал и бот несидел 
LABEL(Go) // начало пути на место кача 
MSG(Побежал) // ну и так понятно 
MOVETO(x,y,z) 
MOVETO(x,y,z) // может быть сколько угодно в зависимости как далеко бежим 
MOVETO(x,y,z) 
MSG(На место кача пришел) // ну сказать что бот на месте кача 
SET(FIGHTSTART) // аналог нажатия в боте BeginCombat 

Цитата: 
LABEL(Death_Check) // ставим метку для проверки то что бот жив или уже несовсем 
CHARSTATUS(CHP,<=,0) // проверка ХП 
{ 
SET(FIGHTSTOP) // останавливем бой (аналог нажатия в боте EndCombat) 
DELAY(5000) // 5-и секундная задежка, ну так чобы было 
GOHOME() // вернутсья в город (аналог нажатия в игре To Nearest Village) 
DELAY(10000) // задержка 10 сек для того чтобы небыло палева, просто когда играешь из клиента то пока прогрюзятся текстуры и место положение то проходит некоторое время 
JMP(start) // переходим на метку LABEL(start) тобиш в начало скрипта, и бот начинает опять бежать на качь 
} 
JMP(Death_Check) 

тут проверяем ХП бота, если ХП меньше нуля (а это и есть смерть) то выполняется скрипт из фигурных скобок, если бот жыв то сразу идет команда JMP(Death_Check), и опять проверка ХП, тобиш в этом месте скрипт зацикливается на проверке ХП пока бот в это вемя мочит мобов повыщая уровень.
Код:
------------------------------------------------------------------------------------------- 
НИЖЕ описаны ТУПО КОМАНДЫ 
------------------------------------------------------------------------------------------- 
LABEL(*****) 
//Обозначает метку для перехода по командам JMP(*****) и CALL(*****). 

JMP(*****) 
//Переход к LABEL(*****) где текст в скобках такой же. 

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

RETURN() 
//Возврат из подпрограммы на CALL(*****). 

***** - название метки 

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

Pause(x) 
x = милисекунды 
//Видимо тоже что и DELAY(x), я непробывал т.к. пользуюсь DELAY(x) 

EXIT() 
//Остановка скрипта или выход из скрипта. 

ПЕРЕМЕЩЕНИЕ: 

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

ПРЕДМЕТЫ: 

ITEMCOUNT(Название предмета[ID=#],<,1) 
{ 
скрипт 
} 
//Подсчитывает количество указанных предметов с условиями 
>= больше или равно 
> больше 
== равно 
!= неравно 
< меньше 
<= меньше или равно 
и выполняет скрипт в фигурных скобках. 
Если невыполняется подсчет то скрипт из фигурных скобок невыполняется 

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

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

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

SaveItem(Название предмета[ID=**],#) 
//Помещает предмет в хранилище (Warehouse). 
SaveItem(Название предмета[ID=**],#;Название предмета[ID=**],#) 
//Помещает несколько предметов в хранилище (Warehouse). 
SaveItem(*) 
//Помещает в хранилище (Warehouse) все предметы которые отмеченны в настройках бота как Store. 

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

NPC: 

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

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

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

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

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

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

ChangeWaitType(x) 
//сменить положение 
ChangeWaitType(0) // сесть. 
ChangeWaitType(1) // встать. 

CharStatus([CHP|CMP|HP|MP|WEIGHT|LV|SP|RACE|STAND],[>=|>|==|!=|<|<=],число) 
{ 
Скрипт 
} 
CHP = Здоровье персонажа в единицах 
CMP = Мана персонажа в единицах 
HP = Здоровье в (%) 
MP = Мана в (%) 
WEIGHT = Загрузка рюкзака в (%) 
LV = Уровень вашего перса 
SP = SP вашего перса 
RACE = проверяет рассу (human=0, Demon=1,Dark Elf=2, Elf=3, Dwarf=4) 
для чего проверять рассу мне непонятно 
STAND = Проверка сидишь или стоишь 
CharStatus(STAND,==,0) Сидишь 
CharStatus([STAND,==,1) Стоишь 

Ориентация на местности: 

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

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

SET(FIGHTSTART) 
//Начать бой. 

SET(FIGHTSTOP) 
//Останавить бой. 

GOHOME() 
//если чар умер то возвратиться в ближайщий город 

SAY(Сообщение) 
//написать в общий чат 

MSG(Текст) 
//написать Текст в поле SYS 
очень удобно при тестировании скрипта

USESKILL (name [ ID=x ], SELF|PLAYER|PARTY|NPC|PET, TargetName) // ID навыка указывать необязательно
//использовать навык
SELF // на себя
PLAYER // на игрока
PARTY // на сопартийца
NPC // на НПС (думаю, что и на моба можно)
PET // на питомца
TargetName// имя цели (ник игрока, НПС, ...)

Например: USESKILL(Shield,SELF)
USESKILL (Magic barier,PLAYER,pitbul)

SET(L2WALKER,DISABLE)
SET(L2WALKER,ENABLE)

З.Ы.
Кто знает команды, не упомянутые здесь, пишем, не стесняемся.
Сайт по скриптингу (необходима регистрация)

Отредактировано pitbul (20-10-2007 13:09:14)

0

2

pitbul написал(а):

DELAY(110000)

как я понял это минуты в микросеках?

да и еще пати, бот берет в ручную??

Да, это время в микросеках (1с = 1000мкс);
Автоприём пати выставляется в настройках бота.

Отредактировано pitbul (14-10-2007 18:07:48)

0

3

Кому надо могу предложить скрипт на квест для рец на Ы бижу.
Скрипт написан под дагерщика и желательно чтобы у него палка на реген маны была. С одним но его надо немного подправить, т.к. когда он писался на серваке были дикие лаги и поетому там после разговоров с НПС стоят задержки, вообщем кто шарит подправит. Скрипт выполняется приблизительно за 10 мин и зациклен по кругу. Также есть скрипт на крафт бутылок СР и складирование их в склад, главное загрузить в склад соул ори.
Паша, если не затруднит, создай 2 отдельные темы в этом разделе и выложи эти 2 скрипта
Но этот раздел открыт для всех щас :)

Отредактировано pitbul (14-10-2007 18:50:39)

0

4

эх..... в эти скрипты б да оператор иф....
Та да, язык скудный.

Отредактировано pitbul (15-10-2007 19:25:03)

0

5

Ребята подскажите что ето за язык программирования?!!!где можно литературу почитать про него?!!!а вот оператор if или when  написании скрипта не помешал :)))
Это язык программирования племени майя. Почитать про него можно в библиотеке Вернадского.

Отредактировано pitbul (16-10-2007 19:26:53)

0

6

Вот ещё 2 команды:
SET(L2WALKER,DISABLE)
SET(L2WALKER,ENABLE)

0

7

http://ltwo.insane-gamers.com/

0

8

pitbul написал(а):

LABEL(start) // начало скрипта

Цитата:
CharStatus(STAND,==,0) // проверка сидит перс или стоит
{
MSG(Хоре сидеть) // ну это так от себя
ChangeWaitType(1) // команда бота ВСТАТЬ
DELAY(1500) // ожидание пока бот встанет
JMP(Go) // перепригиваем на метку LABEL(Go)
}

это надо на случай если после смерти у бота было мало ХП и в настройках бота стоит содиться. Просто если бот сидит то он побежать несможет
работает так: проверяем на сидит-ли бот, если сидит то выполняем скрипт в фигурных скобках, если несидит перепрыгиваем на метку LABEL(Go)

Цитата:
MSG(НЕ СИЖУ!) // а это чтобы знать что скрипт сработал и бот несидел
LABEL(Go) // начало пути на место кача
MSG(Побежал) // ну и так понятно
MOVETO(x,y,z)
MOVETO(x,y,z) // может быть сколько угодно в зависимости как далеко бежим
MOVETO(x,y,z)
MSG(На место кача пришел) // ну сказать что бот на месте кача
SET(FIGHTSTART) // аналог нажатия в боте BeginCombat

Цитата:
LABEL(Death_Check) // ставим метку для проверки то что бот жив или уже несовсем
CHARSTATUS(CHP,<=,0) // проверка ХП
{
SET(FIGHTSTOP) // останавливем бой (аналог нажатия в боте EndCombat)
DELAY(5000) // 5-и секундная задежка, ну так чобы было
GOHOME() // вернутсья в город (аналог нажатия в игре To Nearest Village)
DELAY(10000) // задержка 10 сек для того чтобы небыло палева, просто когда играешь из клиента то пока прогрюзятся текстуры и место положение то проходит некоторое время
JMP(start) // переходим на метку LABEL(start) тобиш в начало скрипта, и бот начинает опять бежать на качь
}
JMP(Death_Check)

тут проверяем ХП бота, если ХП меньше нуля (а это и есть смерть) то выполняется скрипт из фигурных скобок, если бот жыв то сразу идет команда JMP(Death_Check), и опять проверка ХП, тобиш в этом месте скрипт зацикливается на проверке ХП пока бот в это вемя мочит мобов повыщая уровень

Вопрос а как во время боя поставить употребление хилок? Какой скрипт надо вставлять в Death_Check?

0

9

Употребление хилок выставляется в настройках бота без всяких скриптов
Почитай Вот это для начала.

Отредактировано pitbul (01-05-2008 13:03:29)

0

10

напишите кто-то скрипт шоб боты рекали

Отредактировано Krios (03-09-2008 00:26:19)

0


Вы здесь » .::KUVALDA forum » L2Walker&Co » Мануал по скриптингу для L2Walker