Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

FAQ по скриптописанию

-

Скрипты и перехват пакетов

- Скрипты и перехват пакетов

Ответ
 
Опции темы
Старый 13.03.2009, 19:26   #1
-= Чит-Мастер =-
 Рыцарь-защитник
Аватар для Razzor
 
Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(
Регистрация: 23.04.2008
Сообщений: 583
Популярность: 26705
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 1,365
Поблагодарили 2,428 раз(а) в 666 сообщениях
Отправить сообщение для Razzor с помощью ICQ Отправить сообщение для Razzor с помощью Skype™
 
По умолчанию FAQ по скриптописанию

Основные команды:
Код:
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)
\\Останавливает бой.
  Ответить с цитированием
9 пользователя(ей) сказали cпасибо:
Amf1tamin (01.11.2011), bibius2013 (01.11.2009), Coby (25.07.2009), Fighter123 (12.08.2009), GLaX (13.08.2009), Ivan_32 (15.04.2009), wagan (02.06.2009), Zhyk (13.03.2009), ZliLO (13.03.2009)
Старый 15.04.2009, 15:15   #2
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

Более подробно расписано;
Пояснение команд

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

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)
Всё выше написанное является копирайтом.
На авторство статьи не коем образом не притендую.
________________

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
8 пользователя(ей) сказали cпасибо:
Coby (25.07.2009), GLaX (13.08.2009), Ivan_32 (15.04.2009), pareHbry6axa (30.07.2015), poliandr87 (24.06.2009), Razzor (15.04.2009), Seruy (18.06.2009), smartik (03.07.2009)
Старый 07.07.2009, 16:43   #3
 Разведчик
Аватар для goros
 
goros на правильном пути
Регистрация: 05.07.2009
Сообщений: 7
Популярность: 20
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

Команды валкера new. Работают только с 2,13 + версии
_http://www.towalker.com/english/index.html
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])
Определяет наличие состояния у указанных мемберов,
Примеры скриптов, можно добавить _http://zhyk.ru/forum/showthread.php?t=4378

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)
_http://www.towalker.net/down/id-e.zip

Последний раз редактировалось goros; 07.07.2009 в 16:46.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Catchy (15.11.2009), GLaX (13.08.2009)
Старый 18.07.2009, 02:21   #4
 Разведчик
Аватар для Catchy
 
Catchy на правильном пути
Регистрация: 14.07.2009
Сообщений: 36
Популярность: 64
Сказал(а) спасибо: 7
Поблагодарили 27 раз(а) в 14 сообщениях
Отправить сообщение для Catchy с помощью ICQ
 
По умолчанию Re: FAQ по скриптописанию

Редкие, но порой очень нужные значения 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(сохранить)


© [Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Чем тоньше лёд, тем больше всем хочется убедиться, выдержит ли он.(с)
Помог -> Спасибку!
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
GLaX (13.08.2009), Impaled (18.07.2009), ZliLO (18.07.2009)
Старый 30.04.2010, 20:53   #5
 Пехотинец
Аватар для Mihail1oo5oo
 
Mihail1oo5oo на правильном пути
Регистрация: 28.01.2010
Сообщений: 60
Популярность: 48
Сказал(а) спасибо: 117
Поблагодарили 51 раз(а) в 24 сообщениях
Отправить сообщение для Mihail1oo5oo с помощью ICQ Отправить сообщение для Mihail1oo5oo с помощью Skype™
 
По умолчанию Re: FAQ по скриптописанию

Я хочу написать скрипт на подмену пакетов, для использования в l2phx.
begin
label;(metaka);
if FromServer and (pck=HStr('хекс заменяемого пакета')) then pck:=HStr('хекс нового пакета');
jmp(metaka)
end.
Я новичек в этом деле, но что не так?
________________
ICQ:619-146-764
skype: space_invader15
vk: /jahrakal_trollwarlord
  Ответить с цитированием
Старый 06.05.2010, 12:14   #6
 Разведчик
Аватар для fleischer
 
fleischer никому не известный тип
Регистрация: 31.10.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

у меня ситуация такая:
мне нужно чтобы бд бафала и делала офф пати,
с этими командами это вполне получается,
но к сожалению старые л2 валкеры эту функцию не поддерживают
на серве котором играю хроники - хеллбаунд
пробывал валкер 10.9.7 - у меня в нём не показывается инвентарь - всё каряво вхлам, но команды работают...
ктонь может подсказать что делать?
  Ответить с цитированием
Старый 25.10.2010, 19:12   #7
 Разведчик
Аватар для nokia3110c
 
nokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краях
Регистрация: 04.09.2010
Сообщений: 25
Популярность: -231
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 4 сообщениях
Отправить сообщение для nokia3110c с помощью ICQ Отправить сообщение для nokia3110c с помощью Skype™
 
По умолчанию Re: FAQ по скриптописанию

Цитата:
Сообщение от J-FobosПосмотреть сообщение
DLGSEL(Диалог) \\Выьрать пункт диалога [пример: DLGSEL(Buy)].

а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 2 одинаковые строки, в одной телепорт за гейт пасы а в другой за адену, как сделать чтоб бот выбрал 2 строку
________________
Помог? Тыкни спасибо!!
  Ответить с цитированием
Старый 25.10.2010, 19:38   #8
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

Цитата:
Сообщение от nokia3110cПосмотреть сообщение
а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 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, который будет делать эти строки разными. Конкретный скрипт будет зависеть от хроник, также от языка диалога.
________________

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
Старый 25.10.2010, 19:50   #9
 Разведчик
Аватар для nokia3110c
 
nokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краях
Регистрация: 04.09.2010
Сообщений: 25
Популярность: -231
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 4 сообщениях
Отправить сообщение для nokia3110c с помощью ICQ Отправить сообщение для nokia3110c с помощью Skype™
 
По умолчанию Re: FAQ по скриптописанию

Цитата:
Сообщение от J-FobosПосмотреть сообщение
писать скрипт для WP/PH, который будет делать эти строки разными. Конкретный скрипт будет зависеть от хроник, также от языка диалога.

что такое WP/PH, и как написать этот скрипт хроники интерлюд
________________
Помог? Тыкни спасибо!!
  Ответить с цитированием
Старый 25.10.2010, 21:57   #10
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

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

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
Пользователь сказал cпасибо:
nokia3110c (26.10.2010)
Старый 26.10.2010, 20:52   #11
 Разведчик
Аватар для nokia3110c
 
nokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краяхnokia3110c неизвестен в этих краях
Регистрация: 04.09.2010
Сообщений: 25
Популярность: -231
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 4 сообщениях
Отправить сообщение для nokia3110c с помощью ICQ Отправить сообщение для nokia3110c с помощью Skype™
 
По умолчанию Re: FAQ по скриптописанию

у меня проблема, заходил на боте все норм было,а сегодня запускаю и не хочет заходить я подазреваю что это из-за WSS там пишет так
Код:
!! Нет прав владельца (code: 10048)
что это значит?
________________
Помог? Тыкни спасибо!!
  Ответить с цитированием
Старый 04.11.2010, 01:52   #12
 Разведчик
Аватар для dynya
 
dynya никому не известный тип
Регистрация: 10.06.2010
Сообщений: 33
Популярность: 12
Сказал(а) спасибо: 5
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: FAQ по скриптописанию

Цитата:
Сообщение от nokia3110cПосмотреть сообщение
а вот к примеру, мне нужно сделать нубл тп, я выбираю ноблесс телепорт, а там появляется 2 одинаковые строки, в одной телепорт за гейт пасы а в другой за адену, как сделать чтоб бот выбрал 2 строку

Я писал скрипт на Волкере и на ПХ одновременно включал их
На волкере было когда подходишь к ГК кидаешь на себя нубл, а на ПХ был скрипт при появлении пакета от клиента заюзать на себя нубл делать ТП через нубл по 2-му диалогу, примерный скрипт будет такой
PHP код:
const
name 'Dunyashka' ;
begin
if FromClient and(pck=HStr('Пакет нубла на себя')) then begin 
buf
:=HStr('Пакет тп через 2-ой диалог');
SendToServerEx(name);
end;
end
  Ответить с цитированием
Старый 07.11.2010, 00:57   #13
 Разведчик
Аватар для TheOne15
 
TheOne15 никому не известный тип
Регистрация: 21.10.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

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

это значит что тебе нужно купить бота))
  Ответить с цитированием
Старый 28.11.2010, 16:30   #14
 Пехотинец
Аватар для Icve
 
Icve на правильном пути
Регистрация: 28.06.2010
Сообщений: 71
Популярность: 50
Сказал(а) спасибо: 31
Поблагодарили 20 раз(а) в 12 сообщениях
 
По умолчанию Re: FAQ по скриптописанию

Имеется ли команда для атаки NPC?
________________
Принимаю спасибо.Не так сложно нажать одну кнопку
  Ответить с цитированием
Старый 30.11.2010, 09:59   #15
 Разведчик
Аватар для dynya
 
dynya никому не известный тип
Регистрация: 10.06.2010
Сообщений: 33
Популярность: 12
Сказал(а) спасибо: 5
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: FAQ по скриптописанию

Таргет по нпс + Форс атак, посмотри скрипты на сливания гвардов) т.е делевл
  Ответить с цитированием
Ответ

Метки
скриптописанию


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 18:11.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net