Автор Тема: Команды скриптов L2Walker  (Прочитано 14127 раз)

Оффлайн raptor

  • Boss
  • Сообщений: 7514
  • Karma: -14
  • Пол: Мужской
  • Искатель сокровищ!
  • Награды 5 лет на форуме Выдается за посещение хотя бы 1-ой сходки
    • Просмотр профиля
    • 13NoobsTeam
    • Награды
Команды скриптов L2Walker
« : 03 июня 2010, 18:59:33 »
Внимание, для тех кто не знает: все скрипты должны быть написаны в текстовом редакторе, файл скрипта должен иметь расширение *.SEC и сохранен в Unicode. Виндовый блокнот имеет функцию сохранения в Юникоде. Смотрите внизу, где задаете имя файла при сохранении. В противном случае скрипт просто не будет виден или не будет выполняться.
Транскрипция команд подана на русском язике, для более удобного обращения с Валкером.


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


Call()
Эта функция перемещает вас к Label(), используется вместе с функцией Return() который возвращает вас к строке после выполненного Call().

Пример:
[cut]-------------------Скрипт-------------------
Call(Test1)
Delay(1000)//1
Call(Test1)
Delay(1000)//2
Call(Test1)
Delay(1000)//3
Call(Test1)
Delay(1000)//4

EXIT()

Label(Test1)
Delay(2000)//Call1
Return()
---------------------------------------------


Первый Call(Test1) перекинет выполнение скрипта к Label(Test1), выполнив этот код, все вернется к Call(Test1) по команде Return().

После этого будет выполнено Delay(1000)//1 и отправит вас к следующему Call(Test1).

Второй Call(Test1) также перекинет вас на выполнение метки Label(Test1) и опять выполнит код идущий под данной меткой, но на этот раз Return() вернет вас не к первому Call(Test1) а ко второму Call(Test1) и выполнит уже функцию помеченную как (1000)//2 function.

Это будет происходить с каждым Call(Test1) и ретурном перекидывать к коду после выполненного Call(Test1)

Если бы мы использовали Jmp() вместо Call(), команда Return() не имела бы действия и не перекидывала бы нас обратно к функции Jmp().
Надеюсь, я все понятно объяснил.

Если не поняли, просто выполните данный скрипт и посмотрите...а потом попробуйте заменить Call() на Jmp() и посмотрите что произойдет.
[/cut]

Delay(миллисекунды)
Приостанавливает выполнение скрипта на указанное время. Например, Delay(2000) приостановит скрипт на 2 секунды. 1000 миллисекунд равняется 1 секунде.


Exit(текст)
Завершает скрипт. Зачем там текст я хз, если честно


GoHome(текст)
Данная функция отправляет вас домой в случае если вы мертвы. Ничего не делает в случае если вы живы.


Label(текст)
Используется как метка для вызова командой Call() или Jmp(). О функции Call()читайте выше.
З.Ы. Примечание переводчика: в скобках команд идет текст по которому распознается нудная метка. То есть если вам необходимо создать несколько меток, то вы пишите определенный текст в скобках и функциями Call и Jmp вызываете необходимую вам метку.

Пример:
[cut]Label(metka1)
Delay(1000)
Jmp(metka1)


Получится циклический скрипт, который никогда не закончится и в принципе ничего не делает, кроме как считает 1000мсек и так каждый раз при вызове функции. Если в слове будет допущена ошибка, или метки с заданным именем не будет существовать – скрипт закончится.[/cut]


Pause(текст)
Эта команда поставит выполнение вашего скрипта на паузу. Для продолжения выполнения скрипта, необходимо нажать Continue во вкладке Script.


Return()
Как описано выше, данная команда выполняется для вызова строки следующей за уже выполненной функцией Call(). Распространенным заблуждением является мнение, что команда Return() перезапускает ваш скрипт. Это не так.


Say(Сообщение)
Функция используемая для того чтобы сказать что-то в главный чат. На мой взгляд бесполезна.


NPCSel(NPCNAME[ID=#])
Выбирает НПЦ по имени и/или ID. Необходимая команда для начала разговора с НПЦ.

Пример:
[cut]-------------------Скрипт-------------------
LABEL(Wirphy)
NPCSEL(Wirphy)
DELAY(1000)
NPCDLG(Wirphy)
DELAY(1000)
DLGSEL(Quest)
DELAY(1000)
StrInDlg(Say you will help)
{
DLGSEL(Say you will help)
JMP(Wirphy)
}
StrNotInDlg(Say you will help)
{
DELAY(1000)
NPCDLG(Wirphy)
DELAY(1000)
DLGSEL(Go to another village)
DLGSEL(Go to another village)
DLGSEL(The Northeast Coast - 700 Adena)
DELAY (30000)
}
---------------------------------------------[/cut]

NPCDlg(NPCNAME[ID=#])
Команда инициирующая диалог с НПЦ.


DlgSel(пункт диалога)
Выбор пункта диалога при разговоре с НПЦ. Пример см. выше.


StrInDlg(строка диалога для поиска)
Ищет строку в диалоге с НПЦ. Если таковая найдена, то выполняет скрипт в математических скобках { }. Скобки НЕОБХОДИМЫ чтобы данная функция работала правильно!!!


StrNotInDlg(Diologue)
Ищет строку в диалоге с НПЦ. Если таковая НЕ найдена, то выполняет скрипт в математических скобках { }. Скобки НЕОБХОДИМЫ чтобы данная функция работала правильно!!!


BuyItem(ITEMNAME[ID=#],#;)
После инициации купли/продажи. Покупает у НПЦ предмет с указанным именем и/или ИД. На месте “ID=#” ИД предмета (ID=1234), на месте второго # кол-во пердметов.


BuySeed(SEEDNAME[ID=#],#;)
Покупает у НПЦ семена с заданным ИД и кол-вом. На месте “ID=#” ИД предмета (ID=1234), на месте второго # кол-во пердметов.


SellSeed(SEEDNAME[ID=#],#;)
Работает также как и функция BuySeed(), только продает семена, а не покупает.


LoadItem(ITEMNAME[ID=#],#;)
Забирает предмет из вархауса или клан-вархауса. Окно передачи должно быть открыто для выполнения данной функции. Используйте символ точка с запятой ; чтобы добавить несколько предметов. Пример использования:

Пример №1:
[cut]-------------------Скрипт-------------------
LoadItem(Stem[ID=1864],50;Varnish[ID=1865],50)
---------------------------------------------

Этот скрипт позволит вам забрать из ВХ 50 stems(веток) и 50 varnish(варниш).[/cut]
Пример №2:
[cut]-------------------Code-------------------
LoadItem(Stem[ID=1864],all;Varnish[ID=1865],all)
---------------------------------------------

Этот скрипт заберет ВСЕ имеющиеся ветки и варниш из ВХ.


SaveItem(ITEMNAME[ID=#],#;)
Эта функция позволит вам положить предмет в ВХ/КВХ. Диалог передачи должен быть открыт для выполнения данной функции.
[/cut]
Пример:
[cut]-------------------Скриптег-------------------
LABEL(Itemdeposit)
NPCSEL(Airy[ID=7522])
DELAY(1000)
NPCDLG(Airy[ID=7522])
DELAY(1000)
DLGSEL(Deposit Item (Private Warehouse))
DELAY(1000)
ITEMCOUNT(Stem[ID=1864],>,0)
{
SaveItem(Stem[ID=1864],9999)
CALL(Itemdeposit)
Delay(2000)
}
---------------------------------------------[/cut]

первая часть скрипта вобщем-то не важна для примера данной функции. Она служит для выбора начинает диалог с НПЦ (в данном случае это Airy), и открывает окно "Deposit Item" (для более подробной инфы, смотрите выше). Также как и выше в случае с выгрузкой из ВХ, эта функция напротив кладет в ВХ 9999 stems(стемов - веток) или же все имеющиеся ветки, если у вас меньше чем указанное число).


SellItem(ITEMNAME[ID=#],#;)
Работает также как и BuyItem, только, напротив - продает предметы из вашего инвентаря.
На месте “ID=#” ИД предмета (ID=1234), на месте второго # кол-во пердметов.


UseItem(ITEMNAME [ID=#];)
Использует желаемый предмет(ы). Чтобы использовать несколько предметов, используйте ; в качестве разделителя.


UseSkill(NAME[ID=#],TARGETTYPE,ИмяЦели..)
Используется для использования скилла на цели, указанной через TARGETTYPE и ИмяЦели...

Возможные цели использования скиллов:
[cut]
NPC:
UseSkill(NAME[ID=#],NPC,ИмяЦели.)

Party:
UseSkill(NAME[ID=#],Party,ИмяЦели.)

Pet:
UseSkill(NAME[ID=#],Pet,ИмяЦели.)

Player:
UseSkill(NAME[ID=#],Player,ИмяЦели.)

Self:
UseSkill(NAME[ID=#],Self,ИмяЦели.)

[/cut]
ChangeWaitType(0|1)
Сажает или поднимает вашего перса. 0 = сесть, 1 = встать.


Set(DefPath,Add,x,y,z,radii)
Добавляет точку пути в секцию Define PathPoint (находится во вкладке Pathing) волкера.


Set(DefPath,Clear)
Очищает все точки пути в данной вкладке.


Set(DefRange,Add,x,y,z)
Добавляет точки пути в секцию Define Range, вкладка Pathing в опциях волкера.


Set(DefRange,Clear)
Очищает все точки в данной вкладке.


Set(RangeType,Defpath)
Выставляет режим боя на Define Path Point.


Set(RangeType,DefPos,x,y,z,radii)
Выставляет режим боя по заданной центральной точке, и задает центральную точку боя по координатам x, y и z, с радиусом указанным в radii.


Set(RangeType,DefRange)
Выставляет режим боя в режим Define Range.


Set(RangeType,RAnd)
Выставляет режим боя на «случайный» (или как он там указан в волкере, уже не помню).


Set(RangeType,StartPos,radii)
Начинает бой указывая текущую позицию центральной как если бы вы выбрали "Combat Begin Point is Center Point" с радиусом заданным на месте «radii».


Set(FightStart|FightStop)
Разрешает или запрещает Режим Боя.


Set(Item,PICKUPSETTING,NAME[ID=#])
Эта функция меняет свойства поднятия предметов во вкладке PICKUPSETTING Возможные варианты:


Поднимать:
Set(Item,Pick,NAME[ID=#])

Не поднимать:
Set(Item,NoPick,NAME[ID=#])

Сохранять пердметы (думаю что в ВХ. Я так и не понял для себя точно):
Set(Item,Save,NAME[ID=#])


Set(L2Walker,Enable|Disable)
Запрещает или разрешает бот. Скрипт продолжает функционировать после запрещения бота.


Set(Mon,Attack|AttackOne|NoAttack,ИмяМоба [ID=#])
Меняет свойства для вкладки Mons Settings в волкере (применяется к мобу указанному в ИмяМоба[ID=#]). Следующие параметры могут быть заданы:

Attack
Волкер инициирует атаку против данных монстров самостоятельно.

Пример:
[cut]Set(Mon,Attack,NAME [ID=#])[/cut]

AttackOne
Волкер инициирует атаку против данного монстра, если он стоит один и ему никто не поможет .

Пример:
[cut]Set(Mon,AttackOne,NAME [ID=#])[/cut]

NoAttack
Волкер не атакует моба по своей инициативе, но если монстр начнет приставать к вам, волкер ему ответит взаимностью.

Пример:
[cut]Set(Mon,NoAttack,NAME [ID=#])[/cut]


Операторы:


{}
Математические скобки . Это вспомогательно-обязательный параметр в нескольких функциях, таких как CharStatus(). Если состояние удовлетворяется, то выполняется скрипт идущий в данных скобках. В противном случае он будет пропущен. Код в мат. Скобках не будет использован если он будет размещен без функции, просто посреди скрипта. Открывающая и закрывающая скобки ДОЛЖНЫ находиться на РАЗНЫХ строках.


==
Равный. Соответствующий данному кол-ву или параметру на 100%

>
Больший чем.

>=
Больше чем или равный количеству/параметру. Используется при замере параметра.

<
Меньше чем. Используется при замере параметра.

<=
Меньше чем или равен. Используется при замере параметра.

!=
НЕ РАВНЫЙ. Используется при замере параметра.

;
Разделяет последовательности при указании нескольких предметов. Позволяет одной строкой указывать продажу/покупку/сброс в ВХ/забор из ВХ нескольких предметов. Смотрите пример выше под строкой LoadItems().

>
Больший чем. Используется при замере параметра.

>=
Больший чем или равный. Используется при замере параметра.


CharStatus(CONDITIONTYPE,>=|>|==|!=|<|<=,#)
Замеряет состояние персонажа. Прочитайте все, что относится к «Операторам», чтобы знать как правильно это функционирует.:

CHP --> Здоровье
CharStatus(CHP,>=|>|==|!=|<|<=,#)

CMP: Мана
CharStatus(CMP,>=|>|==|!=|<|<=,#)

HP: ХП персонажа в процентах
CharStatus(HP,>=|>|==|!=|<|<=,#)

MP: МП персонажа в процентах
CharStatus(MP,>=|>|==|!=|<|<=,#)

SP: SP персонажа
CharStatus(SP,>=|>|==|!=|<|<=,#)

LV: Уровень персонажа
CharStatus(LV,>=|>|==|!=|<|<=,#)

Race: Раса персонажа
CharStatus(Race,>=|>|==|!=|<|<=,#)
(#=0: Human; #=1: Elf; #=2: Dark Elf; #=3: Orc; #=4: Dwarf)

Stand: Стоит персонаж или сидит
CharStatus(Stand,>=|>|==|!=|<|<=,0|1)
(#=0: Sit; #=1: Stand)

Weight: Процент загруженности вашего персонажа.
CharStatus(Weight,>=|>|==|!=|<|<=,#)

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


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


PosOutRange(x,y,z,radii)
После данной функции, математические скобки { } обязательны!!! Проверяет находится ли данная позиция в радиусе (определяется по средствам x, y и z и радиусом вместо radii). Если бот НЕ находит указанную область в заданном радиусе, выполняется код в математических скобках { }.


ItemCount(ITEMNAME[ID=#],>=|>|==|!=|<|<=,1)
После данной функции, математические скобки { } обязательны!!! Эта функция проверяет наличие количества указанных айтемов у вас в инвентаре (включая вещи одетые на персонажа) и если условие удовлетворено, выполняется код в математических скобках { }.

Пример:
[cut]-------------------Скрипт-------------------
ITEMCOUNT(Wooden Arrow[ID=17],<=,20)
{
DELAY(1000)
Call(ToTown)
}
---------------------------------------------[/cut]


UseSkill(name[ID=xxx],Self|Player|Party|NPC|PET,TargetName)
Использование скила/умения на ком-либо с такими параметрами:

Name - точное названия скилла (например Stun Shot)
Self - на себя (например медитацию)
Player - на игрока (например щит);
Party - на парти мембера (например берсерк);
NPC - на НПЦ (например хилл);
PET - на пета (например хилл)
TargetName - ник или имя НПЦ.


IsMember(Player Name)
Условная комманда, проверяет является ли персонаж членом пати. Я так понимаю работает как, к примеру PosInRange, и после нее можно писать список команд в {} если условие истинно.

Пример:
IsMember(mytom) - проверка, "является" ли членом пати чар mytom


!IsMember(Player Name)
Условная комманда, проверяет НЕ является ли персонаж членом пати Я так понимаю работает как, к примеру PosInRange, и после нее можно писать список команд в {} если условие истинно.

Пример:
[cut]!IsMember(mytom) - проверка, "НЕ является" ли чар mytom членом пати.[/cut]


RequestJoinParty(PlayerName,type)
Кидает пати персонажу, с конкретным типом распределением предметов.
Параметр type: 0 - поднявшему; 1-случайно; 2 - случайно, включая спойл; 3 - по очереди; 4 - по очереди, включая спойл.

Пример:
[cut]RequestJoinParty(mytom,0) - кидает пати чару, с распределением предметов поднявшему.[/cut]

RequestOutParty(PlayerName)
Исключает персонажа из пати

QuitParty(text)
Выходит из пати. Не знаю зачем здесь текст. Можно опустить.

MemberStatus(object name,status name[Id=XXX])
Условная комманда, проверяет наличие бафов/дебафов на персонаже.

Пример:
[cut]MemberStatus(mytom,Shield[Id=1040]) - проверяет наличие на чаре mytom бафа Shield.[/cut]


!MemberStatus(object name,status name[Id=XXX])
Условная комманда, проверяет отсутсвие бафов/дебафов шилд на персонаже.


CharBuffs(status name[Id=XXX])
Условная комманда, проверяет наличие на себе бафов/дебафов.

Пример:
[cut]CharBuffs(Shield[Id=1040]) проверяет наличие бафа Shield на себе.[/cut]


!CharBuffs(status name[Id=XXX])
Условная комманда, проверяет отсутсвие на себе бафов/дебафов.
« Последнее редактирование: 03 июня 2010, 19:08:00 от raptor »
Я главный Orc в стаде Тeam13 !!!

Оффлайн raptor

  • Boss
  • Сообщений: 7514
  • Karma: -14
  • Пол: Мужской
  • Искатель сокровищ!
  • Награды 5 лет на форуме Выдается за посещение хотя бы 1-ой сходки
    • Просмотр профиля
    • 13NoobsTeam
    • Награды
Re: Команды скриптов L2Walker
« Ответ #1 : 17 июня 2011, 15:35:22 »
Скрипт для дестра

LABEL(start)
CharStatus(HP,<,7)
{
UseSkill(Battle Roar [ID=121]) //юзаем батле роар + к хп когда наши хп ниже 7%
}
DELAY(500)
CharStatus(HP,<,10) // -тут проверка на хп, если у нас хп ниже 10% то выполняется действие ниже
{
UseSkill(Guts[ID=139]) //юзаем гатц когда наши хп ниже 10%
}
DELAY(500)
CharStatus(HP,<,30)
{
UseSkill(Zealot [ID=420])
}
DELAY(500)
!CharBuffs(Rage[ID=94]) (проверяем на себе бафф раже, если его нет то юзаем!
{
UseSkill(Rage[ID=94])
}
DELAY(500)
CharStatus(HP,<,20)
{
UseSkill(Frenzy [ID=176])
}
DELAY(500)
JMP(start)

--------------
скрипт циклически повторяется по кругу, проверка по ХП проходит каждую 0.5 сек
« Последнее редактирование: 17 июня 2011, 15:37:27 от raptor »
Я главный Orc в стаде Тeam13 !!!

Оффлайн raptor

  • Boss
  • Сообщений: 7514
  • Karma: -14
  • Пол: Мужской
  • Искатель сокровищ!
  • Награды 5 лет на форуме Выдается за посещение хотя бы 1-ой сходки
    • Просмотр профиля
    • 13NoobsTeam
    • Награды
Команды скриптов L2Walker
« Ответ #2 : 22 февраля 2014, 03:09:08 »
Вообщем, выкладываю свой скрипт гнома (interlude), который подразумевал кач с 1 по куй знает какой левел, но получилось сделать до 25 левела.

Ибо причина банальна, ебанутый скриптовой язык бота, который к тому же работает через жопу (это я говорю про 4bot.ru)

кто немного шарит, может подредактировать под другой сервак диалоги, а так... работает для дефо! сервера! (там на 7 левеле он пушку бежит брать, тут надо руками взять кастеты, оденет их сам и дальше попрет сам)
« Последнее редактирование: 22 февраля 2014, 03:13:30 от raptor »
Я главный Orc в стаде Тeam13 !!!