PDA

Просмотр полной версии : FAQ по скриптописанию


Razzor
13.03.2009, 19:26
Основные команды:
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) \\Останавливает бой.

J-Fobos
15.04.2009, 15:15
Более подробно расписано;
Пояснение команд

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

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)
MOVETO(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(....)
{
...
}
....

©Zzz(Wnet)
Всё выше написанное является копирайтом.
На авторство статьи не коем образом не притендую.

goros
07.07.2009, 16:43
Команды валкера new. Работают только с 2,13 + версии
_[Ссылки могут видеть только зарегистрированные и активированные пользователи]
IsMember: IsMember(Player Name)
Определяет, является ли XXX членом партии

!IsMember: !IsMember(Player Name)
Определяет, является ли XXX не членом партии

RequestJoinParty: RequestJoinParty(object,type)
Приглашает object в партию,
type: метод-распределения-лута, 0 finder keeper, 1 random, 2 rand include spoil, 3 by turn, 4: by turn include spoil


RequestOutParty: RequestOutParty(object)
удаляет object из партии,


QuitParty: QuitParty()
выходит из текущей партии

MemberBuffs: MemberBuffs(character name,status name[Id=XXX])
Определяет наличие состояния у указанных мемберов,
Примеры скриптов, можно добавить _[Ссылки могут видеть только зарегистрированные и активированные пользователи]

1. Скрипт для валкера 2.13+
2. Скрипт на офф пати баф (инвайтим на бафф)

Label(ProverkaBuffa)
!IsMember(Ник бафера)
{
!CharBuffs(Prophecy of Fire[ID=1356]) // указываем нужный баф
{
RequestJoinParty(Ник бафера,0)
}
}

IsMember(Ник бафера)
{
CharBuffs(Prophecy of Fire[ID=1356])
{
RequestOutParty(Ник бафера)
}
}

Delay(1000)
JMP(ProverkaBuffa)


NPC, Skill, ITEM id (GF)
_[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Catchy
18.07.2009, 02:21
Редкие, но порой очень нужные значения SET

SET(RANGETYPE,RAND)
//устанавливает режим боя в состояние "случайно"(английская версия - Rand)

SET(RANGETYPE,STARTPOS,RADIUS)
//устанавливает режим боя в состояние "бой начинаеться из центральной точки"(английская версия - Combat Begin Point In Center Point)
радиус принимает значение параметра RADIUS

SET(RANGETYPE,DEFPOS,x,y,z,RADIUS)
//устанавливает режим боя в состояние "из центра"(английская версия - Center Point)
координаты центральной точки принимают значение (x,y,z)
радиус принимает значение параметра RADIUS

SET(RANGETYPE,DEFRANGE)
//устанавливает режим боя в состояние "определить диапазон"(английская версия - Define Range)

SET(DEFRANGE,ADD,x,y,z)
//добавляет точку пути в таблицу последовательных координат вершин многоугольной зоны для режима "определить диапазон"(английская версия - Define Range)
координаты следующей точки принимают значение (x,y,z)

SET(DEFRANGE,CLEAR)
//чистит таблицу последовательных координат вершин многоугольной зоны для режима "определить диапазон"(английская версия - Define Range)

SET(RANGETYPE,DEFPATH)
//устанавливает режим боя в состояние "определить путь"(английская версия - Define PathPoint)

SET(DEFPATH,ADD,x,y,z,RADIUS)
//добавляет точку пути в таблицу последовательных координат пути для режима "Если нет мобов, двигаться по своему пути"(английская версия - When Not Found Mons) или режима "определить путь"(английская версия - Define PathPoint)
координаты следующей точки принимают значение (x,y,z)
радиус принимает значение параметра RADIUS

SET(DEFPATH,CLEAR)
//чистит таблицу последовательных координат пути

SET(MON,ATTACK|NOATTACK|ATTACK ONE,Name[ID=n];Name1[ID=n];|*)
//назначает тип атаки для мобов, удобен, если на одной и той же территории нужно охотиться за определенными мобами в разное время... в принципе, очень полезен для квестов или территорий с несоциальными мобамиnster
Типы атак: ATTACK(атаковать), NOATTACK(не атаковать), ATTACKONE(атаковать, только когда рядом нету других мобов)
может задаваться для нескольких ID одновременно

SET(ITEM,PICK|NOPICK|SAVE,Name[ID=n];Name1[ID=n];|*)
//назначает действие для определенного дропа
наиболее удобен в случаях, когда 1 бот из пати умирает, а его дроп нужно очень быстро поднять
Режимы подбора дропа: PICK(поднимать), NOPICK(не поднимать), SAVE(сохранить)

© CyPoBblu ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

Mihail1oo5oo
30.04.2010, 20:53
Я хочу написать скрипт на подмену пакетов, для использования в l2phx.
begin
label;(metaka);
if FromServer and (pck=HStr('хекс заменяемого пакета')) then pck:=HStr('хекс нового пакета');
jmp(metaka)
end.
Я новичек в этом деле, но что не так?

fleischer
06.05.2010, 12:14
у меня ситуация такая:
мне нужно чтобы бд бафала и делала офф пати,
с этими командами это вполне получается,
но к сожалению старые л2 валкеры эту функцию не поддерживают
на серве котором играю хроники - хеллбаунд
пробывал валкер 10.9.7 - у меня в нём не показывается инвентарь - всё каряво вхлам, но команды работают...
ктонь может подсказать что делать?

nokia3110c
25.10.2010, 19:12
DLGSEL(Диалог) \\Выьрать пункт диалога [пример: DLGSEL(Buy)].
а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 2 одинаковые строки, в одной телепорт за гейт пасы а в другой за адену, как сделать чтоб бот выбрал 2 строку

J-Fobos
25.10.2010, 19:38
а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 2 одинаковые строки, в одной телепорт за гейт пасы а в другой за адену, как сделать чтоб бот выбрал 2 строку

Use the Noblesse Gate Pass

Teleport to another town
Teleport to the hunting ground
Teleport to the Seven Signs dungeon

Do not use Noblesse Gate Pass

Teleport to another town
Teleport to the hunting ground
Teleport to the Seven Signs dungeon

Бот умеет выбирать только первое совпадение из диалога. Так как там идентичные строки - он будет выбирать только первую.
Вариант решения проблемы только один: писать скрипт для WP/PH, который будет делать эти строки разными. Конкретный скрипт будет зависеть от хроник, также от языка диалога.

nokia3110c
25.10.2010, 19:50
писать скрипт для WP/PH, который будет делать эти строки разными. Конкретный скрипт будет зависеть от хроник, также от языка диалога.
что такое WP/PH, и как написать этот скрипт хроники интерлюд

J-Fobos
25.10.2010, 21:57
WP = Wicked Patcher
PH = Packet Hack
Скрипт пишется руками, предварительно рекомендовано прочесть мануалы по скриптованию и документацию к программе (все имеется у нас на форуме) :)

nokia3110c
26.10.2010, 20:52
у меня проблема, заходил на боте все норм было,а сегодня запускаю и не хочет заходить я подазреваю что это из-за WSS там пишет так
!! Нет прав владельца (code: 10048)

что это значит?

dynya
04.11.2010, 01:52
а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 2 одинаковые строки, в одной телепорт за гейт пасы а в другой за адену, как сделать чтоб бот выбрал 2 строку
Я писал скрипт на Волкере и на ПХ одновременно включал их
На волкере было когда подходишь к ГК кидаешь на себя нубл, а на ПХ был скрипт при появлении пакета от клиента заюзать на себя нубл делать ТП через нубл по 2-му диалогу, примерный скрипт будет такой

const
name = 'Dunyashka' ;
begin
if FromClient and(pck=HStr('Пакет нубла на себя')) then begin
buf:=HStr('Пакет тп через 2-ой диалог');
SendToServerEx(name);
end;
end.

TheOne15
07.11.2010, 00:57
у меня проблема, заходил на боте все норм было,а сегодня запускаю и не хочет заходить я подазреваю что это из-за WSS там пишет так
!! Нет прав владельца (code: 10048)

что это значит?

это значит что тебе нужно купить бота))

Icve
28.11.2010, 16:30
Имеется ли команда для атаки NPC?

dynya
30.11.2010, 09:59
Таргет по нпс + Форс атак, посмотри скрипты на сливания гвардов) т.е делевл

Icve
08.12.2010, 19:48
dynya, Вот как засунуть форс атак не понимаю

Возник ещё один вопрос.Как сделать проверку на нпц?
Объясняю на примере,если он берёт в таргет нпц,то идёт диалог с ним.Если же нпц нет,то это пропускается

Icve
09.12.2010, 23:03
Ещё возник вопрос.Какой командой можно удалять предмет?
Итого 3 вопроса:
Какой командой можно удалять предмет?
Как сделать проверку,если в таргете определённый нпц?(если есть,выполнять скрипт в скобках)
Как в скрипте атаковать НПЦ?

Icve
19.12.2010, 15:56
Ударить нпц/игрока FORCEATTACK

nokia3110c
29.12.2010, 13:30
Писал скрипты и у меня появилось пара вопросв:
1. Как можно написать в скрипте чтоб бот в ПМ строчил?
2. Такая ситуация, вот у меня на сервере в одном из городов стоит 2 бафера, в скрипте написаночто он подбегает к баферу в плотную, а в таргет берет другого и из-за этого не может бафнуться, как может это можно поправить? или может можно как то поставить чтоб он выбирал НПС в определенном радиусе?

J-Fobos
30.12.2010, 10:19
1. Сам волкер (без дополнительных программ) не может автоматически писать в пм. В роли дополнений могут выступать либо ПХ, либо ВП.

2. Как вариант: написать в скрипте чтобы он подбегал к тому баферу которого он берет в таргет.

nokia3110c
01.01.2011, 18:58
1. Сам волкер (без дополнительных программ) не может автоматически писать в пм. В роли дополнений могут выступать либо ПХ, либо ВП.

2. Как вариант: написать в скрипте чтобы он подбегал к тому баферу которого он берет в таргет.

пишу он подбегает к нему в плотную а в таргет берет другого

//J-Fobos: а если написать чтобы он подбегал к тому другому?

Добавлено через 4 часа 56 минут
он таргет берет рандомно((( в этом то и дело((
вот я и думал чтоб он брал таргет в за данном радиусе

dynya
02.01.2011, 04:16
dynya, Вот как засунуть форс атак не понимаю

Возник ещё один вопрос.Как сделать проверку на нпц?
Объясняю на примере,если он берёт в таргет нпц,то идёт диалог с ним.Если же нпц нет,то это пропускается
FORCEATTACK(Petukai[ID=30583]) вот так например

Добавлено через 2 минуты
nokia3110c, добавь делея в скрипт, чтоб у бота было времени добежать до такого другого бафера)

nokia3110c
04.01.2011, 22:42
Писал скрипты и у меня появилось пара вопросв:
1. Как можно написать в скрипте чтоб бот в ПМ строчил?
2. Такая ситуация, вот у меня на сервере в одном из городов стоит 2 бафера, в скрипте написаночто он подбегает к баферу в плотную, а в таргет берет другого и из-за этого не может бафнуться, как может это можно поправить? или может можно как то поставить чтоб он выбирал НПС в определенном радиусе?

может еще кто то подскажет по поводу второго вопроса

Devial
26.03.2011, 18:57
у меня маленькая проблемка в скрипте, нежелает вес проверяться точнее ему все равно какую я указал цифру, а в остальном работает как задумано

LABEL(metka1)
CHARSTATUS(WEIGHT,>=,99)
{
EXIT()
}
JMP(metka2)

LABEL(metka2)
ITEMCOUNT(White Treasure Chest[ID=6514],>,0)
{
USEITEM(itemname[ID=6514])
DELAY(100)
JMP(metka1)
}

ITEMCOUNT(Small White Treasure Chest[ID=6513],>,0)
{
USEITEM(itemname[ID=6513])
DELAY(100)
JMP(metka1)
}

ITEMCOUNT(Big Red Treasure Chest[ID=6512],>,0)
{
USEITEM(itemname[ID=6512])
DELAY(100)
JMP(metka1)
}

JMP(metka1)

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