23 Января 2019 23:05 
Навигация
 +  - 
Скачать игры
Сейчас на сайте
22.01.2019
Warhangel
1 день
offline
19.01.2019
EugeneE...
4 дней
offline
18.01.2019
barmole...
5 дней
offline
17.01.2019
soraaa
5 дней
offline
16.01.2019
haxorwa...
1 неделя
offline
Последние фото
Game of Blocks : WesterosCraft and Game of Thrones
Game of Blocks : Wes...
Альбом: Скриншоты

Вынос трёх пати куполом
Вынос трёх пати куполом
Альбом: Скриншоты



Альбом: Флора

Последние видео
Видео ТРИ СУДЬБЫ - Короткометражный фэнтези-боевик : Короткометражный CGI-фильм, посвященный игре The Elder Scrolls Online.

Игрофильмы:  ТРИ СУДЬБЫ - Короткометражный фэнтези-боевик

Видео Rhine Falls : Rhine Falls Live Camera streeeam

Онлайн камеры:  Rhine Falls

Видео Live Cam, Central Memorial Park, Calgary, Alberta : Central Memorial Park is a park located in central Calgary\

Онлайн камеры:  Live Cam, Central Memorial Park, Calgary, Alberta

Наша кнопочка
FAQ7.ru
Код:
RSS каналы
Новости
Комменты
Форум
Статьи
Фото
Файлы
Ссылки
Объявления
Реклама
Регистрация сайта в каталогах, раскрутка и оптимизация сайта, контекстная реклама
Автор темы: Warhangel
ID темы: 597
Информация о теме:
Имеются 1 сообщений по данной теме, которая была просмотрена 5969 раз.
Реклама
livecoin Обменник
Просмотр темы
Логин:
Пароль:  
Форум » Игровые форумы » Lineage » Боты и скрипты
Просмотр темы
Текущий рейтинг: (Всего: 0 голосов)  
Ответить
Иконка 
Как написать скрипт для L2Walker
Наверх Распечатать сообщение #1
Опубликовано 18-03-2011 15:18
Аватар пользователя

Супер Администратор



Сообщений: 2175
Вас поблагодарили: 18
раз(а) в 18 сообщениях

Зарегистрирован: 24.03.10
Со дня регистрации: 3227
Откуда: Россия
Пол: Мужской

Скрыть награды


Пожаловаться на это сообщение 

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

Мы вас предупреждаем что за ипользование бота можна получить БАН

Начнем с самого главного:
команда 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(*****)
//Обозначает метку для перехода по командам 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
очень удобно при тестировании скрипта

================================================== =
З.Ы. ПАРУ ПРИМЕРОВ
================================================== =
Вот несколько примеров использования команд в скрипте:
скрипт на быстрый запуск СОЕ (это чтобы неискать его в рюкзаке когда там много всего )
Цитата:
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), и опять проверка ХП, тобиш в этом месте скрипт зацикливается на проверке ХП пока бот в это вемя мочит мобов повыщая уровень.
 Offline
 
Посетить сайт автора
Цитировать
Ответить
Здесь присутствуют: 1 (пользователей: 0, гостей: 1)

« Предыдущая тема | Следующая тема »
 RSS Перейти на форум:
Розыгрыши 728х90

Последние объявления
ФотоЗаголовокГородРазмещено
Справка о несудимости в Москве
• Работа и бизнес - Разное Цена: 1 1
Москва05.12.2018
(на 24 месяца)
Универсальный гипермаркет Gecsa
• Развлечения - Туризм Цена: 1 1
Казань06.11.2017
(на 24 месяца)
Продажа опрессовочного оборудования для РВД
• Хозяйство - Оборудование Цена: 1 1
Москва18.10.2017
(на 24 месяца)
Панно Ярыгин ПЯ со знаками ФСБ
• Разное - Прочие мелочи Цена: 1 1
Москва08.04.2017
(на 24 месяца)
Облако тегов тем форума
Топ-10 самых смешных законодательных запретов интимной жизни, Smile Precure! - перекур после Мадоки, Вестернизация - это не просто перевод, считает En Masse, S.T.A.L.K.E.R.: Shadow of Chernobyl, Взламываем браузерные игры, EVE Online - Трейлер дополнения «Цитадель», Коды к игре Sniper: Ghost Warrior, MSI GeForce GTX 770 Gaming - С четырьмя гигабайтами памяти на борту, Адреналин: Клинс, Java сервер Gracia Epilogue от L2jServer, Квест на профессию Ghost Hunter для Abyss Walker, Тихоокеанский рубеж (Pacific Rim), Assassin`s Creed IV Black Flag - Особенности ПК-версии, +100500 или как повар Максим стал работать слабительным, Platinum motorspot "Epic"
Главная Статьи Файлы Форум Ссылки Новости Фотогалерея Объявления Видео Файлобменник Гороскоп Поиск по торрентам Радио Видеочат
Яндекс.Метрика
Powered by PHP-Fusion copyright © 2002 - 2019 by Nick Jones. Released as free software without warranties under GNU Affero GPL v3.