Долго лазил по и-нету и вот что нарыл по теме из разных источников:
Скрипт нужно создавать в блокноте, сохранить в кодировке "Юникод".
Затем созданный скрипт нужно поместить в папку \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)