Вернуться   D3Scene.Ru Софт портал игр | Хаки | Проги | Статьи > Онлайн MMO игры > Lineage 2
Присоединяйся к нам

Lineage 2 Одна из популярнейших онлайн игр.



Ответ
 
Опции темы Опции просмотра
Старый 06.06.2009, 20:18   #1
Рядовой
 
Аватар для DaniCh
 
Регистрация: 29.04.2009
Адрес: Воркута
Сообщений: 24
Репутация: 10
Отправить сообщение для DaniCh с помощью ICQ
Автор По умолчанию

уроки по скриптованию (L2walker)


Введение . Основные сведения про скрипты для валкера/ингейма . Команды скриптов .
Скрипты для валкера/ингейма - это текстовые файлы с расширением .SEC Их можно открывать Блокнотом и их читать . В Блокноте их можно и создавать , но есть один очень важный момент ! После того как вы создали файл в Блокноте то чтобы сохранить его надо нажать "Сохранить как..." а затем Кодировку выбрать Юникод !!! Это очень важно , запомните это .

Готовые скрипты размещают в папке SCRIPT валкера/ингейма . Можно в этой папке создать еще свои папки , это очень удобно когда у вас много скиптов уже есть - тогда в окне скрипты будут видны как в Проводнике .

Теперь команды скриптов . Вот вам старенький ФАК , он еще со времен Ц3:
Код:
How to make a script: 
1. You will need L2Walker 
2. You will need notepad and the file extension must be .sec (ie: script.sec) 
3. The File must be saved as: unicode (File|Save As| Encoding: Unicode) 
4. Read this msg to learn about commands. 

Scripting Rules/Guidelines: 
- A script instruction must occupy a line. 
- () front is the instructionname(no spaces) between commands and parenthesis. IE: MOVETO(x,y,z) 
- () The center is the instruction parameter 
- Must save file in Unicode format! 
- IDs to obtain Item IDs, just get the item in your inventory 
then put it in the buy or sell (in vending options) save it.. open your .INI file and look for it. 
so far this has been the fastest way i have gotten item IDs. 
- Condition judgment instruction,If judges correct executes the next instruction or under with {}the center instruction, 
- Otherwise can jump over to the next instruction under or jumps over continuing on with the script. 

Example: 

Code: 

ITEMCOUNT(Healing Potion,>,1) 
{ 
RETURN 
} 
MSG(You do not have any potions!) 
JMP(Buy Potion) 
USEITEM(Scroll of Escape) 
DELAY(5000) 

If I had 2 potions on me, it will skip the part between { }. This is a simple little script not usuable, but 
should show you the "Condition" script. 

COMMANDS: 

Code: 
MOVETO(x,Y,Z) 

Explained:Moves to x,Y,Z. You can check your posistion by clicking: 
SETUP | OPTION - Pathing | .Cur 

Code: 
NPCSEL(name[ID=x]) 

Explained:Chooses NPC. Can select an NPC within the field of range. 
Noticed that you can select them even if you don't use ID. 
IE: NPCSEL(Sovin) 

Code: 
NPCDLG(name[ID=x]) 

Explained:With NPC dialogue. Opens up the dialog the NPC has. 

Code: 
DLGSEL(name) 

Explainedialogue choice. Look for certain words in dialog and select. 

Code: 
GOHOME() 

Explained:Return to nearest town on death. 

Code: 
SAY(writing) 

Explained:Speaks generally. Anyone in game can view. 

Code: 
MSG(writing) 

Explained:Outside hangs the prompt, Only you can see. 

Code: 
UseItem(name[ID=x]) 

Explained:Uses the stage prop. ID is not required. 

Code: 
BuyItem(name [ ID=x ],Quantity) 

Explained:Purchase goods. ID is required. 
Example 1:BuyItem (returns to the reel [ ID=736 ],2) 
Example 2:BuyItem (returns to the reel [ ID=736 ],2;Reactivating reel [ ID=737 ],3) 

Code: 
SellItem(name [ ID=x ],Quantity) 

Explained:Sell goods. ID is required. 
Example 1:SellItem (returns to the reel [ ID=736 ],2) 
Example 2:SellItem (returns to the reel [ ID=736 ],2;Reactivating reel [ ID=737 ],3) 
Example 3:SellItem (*) sells in the stage prop hypothesis to suppose is "sells"the complete goods 

Code: 
SaveItem(name [ ID=x ],Quantity) 

Explained:No Clue what this is used for. 
Example 1:SaveItem (returns to the reel [ ID=736 ],2) 
Example 2:SaveItem (returns to the reel [ ID=736 ],2;Reactivating reel [ ID=737 ],3) 
Example 3:SavelItem (*) preserves in the stage prop hypothesis to suppose is"saves" the complete goods 

Code: 
LoadItem(name [ ID=x ],Quantity) 

Explained:No Clue what this is used for. 
Example 1:LoadItem (returns to the reel [ ID=736 ],2) 
Example 2:LoadItem (returns to the reel [ ID=736 ],2;Reactivating reel [ ID=737 ],3) 

Code: 
ChangeWaitType(x) 

Explained:The character stands or sits down 
Example 1:ChangeWaitType(0) // SIT I Think. 
Example 2:ChangeWaitType(1) // STAND I Think. 

Conditional order: 

Code: 
StrInDlg(dialogue writing) 

Explained:Judges in the NPC dialogue dialog box whether has the writing which assigns 
Example: 

Code: 

NPCSEL(John Doe[ID=1007534]) 
NPCDLG(John Doe[ID=1007534]) 
DLGSEL(duty) 
STRINDLG(complies to entrust) 
{ 
DLGSEL(complies to entrust) 
JMP(duty meets) 
} 
JMP(duty already received) 

Code: 
StrNotInDlg (dialogue writing) 

Explained:Judges in the NPC dialogue dialog box whether it doesn't have assigned writing 
Example: 
NPCSEL(John Doe[ID=1007534]) 
NPCDLG(John Doe[ID=1007534]) 
DLGSEL(duty) 
STRNOTINDLG(complies to entrust) 
{ 
MSG(already received duty) 
JMP(has met duty) 
} 
DLGSEL(complies to entrust) 

=============================================== 
CharStatus([ CHP|CMP|HP|MP|WEIGHT|LV|SP|RACE|STAND ],[ >=|>|==|!=|<|<=],Num) 
Explained:Character condition judgment. 
HP,MP,WEIGHT: is a percentage 
CHP,CMP: Health current actual value 
WEIGHT: is carries a heavy load the percentage 
LV: Your Level 
RACE: manner race (human=0, Demon=1,Dark Elf=2, Elf=3, Dwarf=4) 
STAND:STAND==1 is standing and STAND==0 is sitting 
============================================== 
PosInRange(x,Y,Z,Range) 
Explained:Examines the character current coordinates whether by x,Y,Z is central 
point range is in the radius center of a circle 

PosOutRange(x,Y,Z,Range) 
Explained:Examines the character current coordinates whether by x,Y,Z is central 
point range is outside the radius center of a circle 

Example: Say you are outside of the set radius 

PosOutRange(100,100,100,500) 
{ 
MSG(please stand in the battle area) 
EXIT() 
} 

ItemCount(name[ID=x],* ,Count) 
* 
>= Greater than or equal to 
> Greater than 
== Equal to 
!= Does not equal 
< Less than nor equal to 
<= Less than 
Explained: 
Assigns the name or the ID stage prop quantity compared with thecharacter body on whether does satisfy the condition 

Flow control instruction: 
CALL(LABEL name) 
Explained:Transfers the LABEL marking the label address execution,Carries out returns, 
Must have to have the RETURN instruction 
Example: 
CALL(next step) 
The transfer completes can continue the execution next step 
... 
EXIT() 
LABEL(next step) 
... 
RETURN 

useskill (name[ID=x]) 

Code: 
JMP(LABEL name) 

Explained:Jumps changes to the LABEL marking the label address execution 

Code: 
RETURN() 

Explained:When CALL transfer must use this to return 

Code: 
EXIT() 

Explained:Conclusion script movement 

Code: 
DELAY(x) 

Explained:Retards x millisecond 

Code: 
PAUSE() 

Explained:Pause the Script 

Code: 
LABEL(Zone) 

Explainedefinition Zone,Uses for JMP or CALL 

Establishment instruction: 

Code: 
SET([ FIGHTSTART|FIGHTSTOP ]) 

Explained:The establishment commencing of action or stops fighting 
Example: 
SET(FIGHTSTART) //Starts to fight 
SET(FIGHTSTOP) //Stops fighting 

EXAMPLES: 

Code: 

LABEL(checkposistion) 
ITEMCOUNT(Scroll of Escape: Castle[ID=1830],>=,Cool 
{ 
CALL(test) 
} 
ITEMCOUNT(Scroll of Escape: Castle[ID=1830],<,7) 
{ 
CALL(test2) 
} 
DELAY(2000) 
JMP(checkposistion) 

LABEL(test) 
MSG(work) 
RETURN 

LABEL(test2) 
MSG(working?) 
RETURN 

В от мои обьяснения этих команд: 

GOHOME() 

Команда возврата в город после сметри 

SAY(текст) 

Писать что-либо в окне чата. 

JMP(название) 

Переход к метке LABEL(название) где текст в кавычках такой же 

CALL(название) 

Вызов подпрограммы. Переход к LABEL(название) где текст в кавычках такой же 

LABEL(название) 

Обозначает метку для перехода по CALL(название) или JMP(название) 

DELAY(x) 

Задерка , где x в милисекундах , т.е 1 сек это 1000 

PAUSE() 

Пауза . Скрипт станет на паузу и запустится вновь после того как вы нажмете кнопку Pause 

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=#],#) 

Забрать несколько предметов из хранилища , # - количество 

NPCSEL(Имя NPC[ID=#]) 

Выбрать NPC 

NPCDLG(Имя NPC[ID=#]) 

Начать диалог с NPC 

DLGSEL(Диалог) 

Выбрать пункт диалога , например: DLGSEL(Buy) 

StrInDlg(Диалог) 
{ 
... 
} 

Проверяет присутствует ли фраза в диалоге ,если да, то исполняетса кусок скрипта в фигурных скобках 

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 - стоишь 

PosInRange(x,y,z,дистанция) 
{ 
... 
} 

проверка находится ли заданная точка в пределах досягаемости (дистанция). Если да, то выполняется кусок скрипта в фигурных скобках 

PosOutRange(x,y,z,дистанция) 
{ 
... 
} 

то же самое, но условие верно, если точка все досягаемости 

SET(FIGHTSTART) 
Начинает бой 

SET(FIGHTSTOP) 
Останавливает бой
Добавлено через 3 минуты
Урок 2

Пишем ваш первый скрипт с командой SAY

Вот те кто никогда скрипты не писал так давайте напишем ваш первый скрипт .

Открывайте блокнот и начинаем писать скрипт .

Здесь дам вам один важный совет . Рекомендую начинать скрипт с "шапки" . Шапка - это информация про скрипт . Если в тектсте скрипта есть двойные косые линии // , то это - комментарии , все что написано после косых линий скриптом не читается и можно этим пользоваться чтобы оставлять коментарии в тексте скритпа и делать "шапки" то же )) В "шапке" пишем краткие сведения про скрипт , желателно там добавить когда он написан , на каких версиях валкера/ингейма проверялся и прочее .

Вот давайте создадим такую "шапку"

//---------------------------------------
//
// Мой первый скрипт
//
// написан 19.05.2008
//
//---------------------------------------

вот теперь давайте протестируем команду SAY и дальше пишем команду

SAY(hi all)

выполняя эту команду скрипт скажет в общий чат hi all

чтобы проверить работает ли у вас эта команда если текст на русском то потом пишем потом такую команду

SAY(привет всем)

а потом пишем еще одну команду MSG -

MSG(test end)

отличие этой команды от команды SAY в том что это команда выдает сообщение не в общий чат , а только сообщение для вас в окне валкера/ингейма

теперь такое очень важное замечание . Все исполняемые команды , в т.ч. SAY и MSG валкером/ингеймом могут выполниться не сразу , могут выполниться не сразу , а скрипт не ожидая окончание выполнения предыдущей команды прейдет к следующей команде и чтото будет пропущено и как результат произойдет сбой или неправильная скрипта . Поэтому приучите себя после всех исполняемых команд ставить задержку хотя бы 0.5сек . Единственное исключение , команда MOVETO , после нее нет необходимости ставить задержку . Поэтому после всех наших команд ставим DELAY(500)

Заканчиваем скрипт командой EXIT() . Ну в данном скрипте в ней нет особой необходимости , когда выполнятся все команды скрипта а скрипт не зациклен то скрипт и так остановится . Но изучим и эту команду

Вот в результате ваш первый скрипт получился такой-

Код HTML:
Код:
//--------------------------------------- 
// 
// Мой первый скрипт 
// 
// написан 19.05.2008 
// 
//--------------------------------------- 

SAY(hi all) 
DELAY(500) 

SAY(привет всем) 
DELAY(500) 

MSG(test end) 
DELAY(500) 

EXIT()
Теперь сохраняем скрипт , обязательно через "Сохранить как ..." и кодировкой выбираем юникод !!! Затем меняем расширение скрипта .txt на .SEC

Помещаем скрипт в папку SCRIPT валкера/ингейма и радуемся вашему первому скрипту ))))
А мне не забывайте говорить СПАСИБО :-)

Ну и в тему скриптов с командой SAY скрипт для спамеров рекламы

Код:
Код:
//------------------------------------------------- 
// 
// скрипт для спама рекламы в общий чат 
// 
//-------------------------------------------------- 

LABEL(metka005) 

SAY(Продам по 3000a билетики для фишермена , за которые вы можете увеличить банк , инвентарь и другое . Цены умеренные . ) 
DELAY(60000) 

JMP(metka005)
Это скрипт уже в отличие от предыдущего так зацикленный . После того как скрипт проспамит рекламу то будет задержка в 1 минуту ( 60сек) , а потом скрипт по команде JMP перейдет к метке в начале скрипта и все опять повторится )))
__________________
Скажи мозгам НЕТ!*ktulhu**wall*

Последний раз редактировалось DaniCh; 06.06.2009 в 20:22. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
Старый 06.06.2009, 20:33   #2
Местный
 
Аватар для W.T^Killer
 
Регистрация: 15.12.2008
Адрес: Москва
Сообщений: 91
Репутация: 52
Отправить сообщение для W.T^Killer с помощью ICQ Отправить сообщение для W.T^Killer с помощью Skype™
По умолчанию

За нидельку научусь.
__________________
[SIGPIC][/SIGPIC]
  Ответить с цитированием Наверх
Старый 07.06.2009, 20:10   #3
Рядовой
 
Аватар для DaniCh
 
Регистрация: 29.04.2009
Адрес: Воркута
Сообщений: 24
Репутация: 10
Отправить сообщение для DaniCh с помощью ICQ
Автор По умолчанию

Урок 3

Пишем скрипты на перемещение с командой MOVETO

Команда MOVETO(x,y,z) - это перемещение в точку с координатами x,y,z , Это часто испольщзуемая команда в составах скриптов .

Расказываю как определять эти х,у,z . Это можно делать разными способами . Если вы в клиенте в окне чата введете команду /loc то вы получите координаты той точки где стоите . Можно командой /loc определять координаты и в окне чата валкера , кстати эта команда там уже есть !

Но проще всего MOVETO писать с помощью ингейма . Открываем меню Script Make и если нажать кнопку REC то ваш маршрут будет записан уже готовыми командами ! Только перемещаться надо аккуратно , не делая ненужных кликов ))))

Кстати , скрипты с командами MOVETO я почти каждый день использую , когда играю на клиненте с ингеймом . Дело в том что в городах есть маршруты , по которым вы пробегаете много много раз за все время игры . Это маршруты от/к ГК , банка , магазинов и подобные . Очень удобно написать для некоторых городов готовые подборки скриптов перемещения по таким маршрутам .

Вот например мой скрипт на перемещение в Гиране от ГК в люксор

Код:
Код:
// Giran от ГК в люксор 

MOVETO(83391,147956,-3431) 
MOVETO(82988,148009,-3495) 
MOVETO(81545,147524,-3490) 
MOVETO(81543,147214,-3559) 
MOVETO(81319,14553  7,-3559) 
MOVETO(81124,145540,-3559) 
MOVETO(80249,145837,-3559) 
MOVETO(80076,145830,-3522) 
MOVETO(79727,145456,-3520)
если написать команды в обратном порядке то получится скрипт на перемещение с люксора к ГК ;-)

Вот попробуйте и сами напишите какойнить подобный скрипт или несколько скриптов .

Ну и вот что еще по поводу команды MOVETO необходимо знать . Дело в том что когда эта команда выполняется то координата z - игнорируется !!! Поэтому скрипт на спуск под воду перед катакомбами надо писать спуск змейкой или по спирали , иначе скрипт посчитает что команда выполнена если совпадут только две первые координаты .

На мостах без перил перемещение надо тщательно посрединке и мелкими шажками писать иначе чар может спрыгнуть с моста )))
__________________
Скажи мозгам НЕТ!*ktulhu**wall*
  Ответить с цитированием Наверх
Старый 12.07.2009, 22:49   #4
Гость_за_инактив
 
Аватар для Gaska
 
Регистрация: 12.07.2009
Сообщений: 3
Репутация: 0
По умолчанию

кто нибудь настройте бот на la2home.com (я не понимаю как:( )

Добавлено через 53 секунды
если что мой емаил [Ссылки скрыты от гостей.] :)

Последний раз редактировалось Gaska; 12.07.2009 в 22:49. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
Старый 31.07.2009, 20:33   #5
Гость_за_инактив
 
Аватар для cigan
 
Регистрация: 20.12.2008
Сообщений: 6
Репутация: 0
По умолчанию

столкнулся с проблеммой( иг волкер не понемает команды начать бой
  Ответить с цитированием Наверх
Старый 23.09.2009, 18:44   #6
Гость_за_инактив
 
Аватар для ahellos
 
Регистрация: 23.09.2009
Сообщений: 2
Репутация: 0
По умолчанию

Проблема волкер выдает ошибку и вылетает пишет Win32 host и вылетает что делать и так все волкеры любая версия
  Ответить с цитированием Наверх
Старый 03.10.2009, 00:07   #7
Гость_за_инактив
 
Аватар для Ks.Valera.
 
Регистрация: 03.10.2009
Сообщений: 5
Репутация: 0
По умолчанию

помню еще на л2 с 3 бота знал как 5 пальцев ососцатЬ! сейчас тож разбираюсь, оброщайтесь
  Ответить с цитированием Наверх
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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


Powered by vBulletin
Copyright © 2017 vBulletin Solutions, Inc.
Перевод: zCarot | Дизайн: G-A | Верстка: OldEr
Текущее время: 12:08. Часовой пояс GMT +4.