Урок 0. Введение в скрипты.

Materials, references, tutorials

Moderators: Murderator+, Murderator

Post Reply
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Урок 0. Введение в скрипты.

Post by Beyonder »

Вот небольшое написал введение в скриптинг. Это не отдельный учебник а именно недостающая часть - Введение. После этого введения следует читать обычные уроки.
Надеюсь этот мануал просветит некоторые моменты в скриптинге как таковом.

Полным чайникам в скриптинге посвящаеться….
1) Что такое скрипт
2) Функции и переменные
3) Использование функций и переменных

Каждый человек наверное когда-нибудь составлял себе списки дел которые надо выполнить, покупок и т.д. Скрипт это похожий список действий которые должен выполнить Инжект и ничего более. Для примера попробуем разложить поход в магазин на скрипт. Вот как он будет выглядеть:
А) Дойти до магазина
Б) Найти Хлеб
В) Взять Хлеб
Г) Найти молоко
Д) Взять молоко
….
Каждое действие можно считать отдельным независимым скриптом. Ведь брать хлеб можно не только в магазине, но и дома когда ты голоден. Также есть некоторые скрипты которые должны дать какой-то результат. Пример – скрипт «Найти хлеб». Этот скрипт должен например найти все хлебы вокруг себя, потом из них выбрать самый мягкий, из них самый дешевый, а тогда выдать наружу («возвратить») местоположение лучшего хлеба. Такие скрипты которые возвращают результат, называються «функциями». К функциям относится большинство математических функций. Например sin(60) возвратит вычисленный результат. Также есть другой вид скриптов называемый процедурами. Процедура – это скрипт которые не возвращает ничего. Например действие «Взять хлеб» просто берет найденный хлеб и больше ничего.

У Инжекта есть некоторые функции которые «вшиты» в него. Тоесть вы их сможете использовать где угодно так как они везде есть где есть Инжект. Все функции инжекта начинаються с слова UO. Во всем остальном они работают точно также как обычные скрипты. О них немного позже.

Вторая важная часть любого скрипта – это переменные. Переменная это как лист для хранения информации любого типа. Например чтобы не искать Хлеб каждый раз при походе в магазин, можно найти его 1 раз, записать в переменную где он находиться, а в будущем просто смотреть на запись и идти туда. Переменные различаються в Инжекте на 2 типа: Числа, и Строки. Например символ ‘1’ совершенно не равен числу 1. Число – это есть именно число, а символ «1» компьютер понимает именно как символ а не как число. Строка «23» это не 23 как строке, а 2 символа «2» и «3».
Любая переменная должна быть создана перед тем как в нее чтото записать. Ведь как вы запишите что-то на некупленный лист бумаги. Чтобы создать переменную нужно перед нею поставить слово ‘var’ (сокращение от «variable» что значит «переменная»). Например это можно сделать так:
Var Name
Name=’Вася’
Первая строка создает переменную, а вторая в нее записывает слово «Вася». На будущее главное помнить, что знак = значит не «равно», а «записать». Тоесть этот знак записывает правую часть, в левую.
В инжекте есть множество переменных которые он создает сам и которые перед использованием создавать не надо, но они в этом уроке рассмотрены не будут.

Также существует такая вещь как «указатели». Указатель указывает на какуюто вещь. Сами создавать вы их не сможете, но использовать их прийдеться. Все указатели должны быть записаны в кавычках. Один из них мы скоро рассмотрим, это указатель «self». Этот указатель указывает на вашего персонажа.

Для начала разберемся как использовать процедуры (скрипты которые не возвращают ничего а просто выполняют действие). Начнем с самой простой процедуры инжекта Print. Эта процедура выводит на экран какое-то сообщение. Вот простой пример его использования:

Code: Select all

UO.Print(‘Сообщение’)

При запуске скрипта, когда он дойдет до этой строчки, в окне Ультимы появиться «Сообщение».

С процедурами все легко, теперь разберемся с функциями. Снова возьмем одну из функций инжекта GetName. Эта функция возвращает имя предмета или персонажа. Припустим мы хотим это имя где-то сохранить чтобы потом его гдето использовать. Вот как это будет выглядеть:

Code: Select all

Var Name
Name=UO.GetName(‘self’)
UO.Print(Name)

Теперь попытаемся разобраться что происходит в этом скрипте.
Для начала мы создаем новую переменную с названием Name. Потом мы запускаем функцию инжекта GetName которая узнает имя из указателя ‘self’. Тоесть мы узнаем наше имя в игре. Узнанное имя возвращаеться функцией наружу, и знаком = сразу записываеться в переменную Name. И в последней строке, процедура Print выводит имя записанное в Name на экран.
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

В этом топе можно спрашивать о любых непонятностях в скриптинге.
Никаких вопросов о применении именно функций инжекта.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

рекомендации:
напиши хоть один работающий скрипт для примера и разбери его построчно. у тебя здесь нет информации о SUB/ENDSUB, на какие кнопки нужно нажимать чтобы появился редактор скриптов и как этот скрипт запустить.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Очень хорошо. Я был бы рад, если бы кто-нибудь написал бы 1-2 урока, любых кроме третьего (он у меня написан уже наполовину, надеюсь скоро закончить). Предварительный план учебника был такой:

Code: Select all

1. Самая важная команда, синтаксис и "Hello, shard!"
   Команда Wait
   Общий синтаскис скриптов
   Функции и процедуры
   Команда Print
   Команда Say
   Переменные и параметры
   Встроенные переменные инжекта
   Оператор If...Endif
   Оператор While...Wend
   Оператор Repeat...Until
   Команда BandageSelf
   Пустой цикл

2. Поиск и использование объектов
   Устройство мира УО.
   Объекты и типы
   Указатели
   Команда ContainerOf
   Команда Findtype
   Команда Ignore
   Указатель 'finditem'
   Команда GetQuantity
   Команда GetSerial
   Команда IgnoreReset
   Команда FindCount
   Команда Set - установка радиуса поиска
   Пример: Поиск других чаров
   Команды GetDistance, GetNotoriety, GetName
   Команда UO.Click

3. И еще об объектах
   Оператор for...next
   Команда Moveitem
   Пример: добор регов
   Массивы
   Пример: Скрипт на лут
   Команда Useitem
   Команда Usetype
   Команда Usefromgrounf
   Модификаторы
   Указатели
   Команда Grab
   Команда Drop
   Команда Drophere
   Команда addobject
   Команда addtype

      
4. Прицелы

5. Работа с журналом инжекта

6. Работа с меню

7. Гампы и все что с ними связано

8. Слои и одежда

9. Покупка и продажа


10ый урок оставлен под приемы написания скриптов. То есть типовые функции, хитрости, рекурсию там же объяснить и т.д.

В общем, если кто-нибудь взялся бы с примерами рассказать о журнале, или о меню, или о прицелах и т.д. - я был бы очень благодарен такому помощнику. И все остальные тоже.
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Бес примеров написано это вступление потому, что все необходимое описано в уроках Эдреда. Здесь я именно собрал ответы на простейшие вопросы заданные в его темах.

Ок, сейчас напишу что-нибудь о прицелах 8)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Кстати, включи в урок 0 понятие истины/лжи, то бишь True/False. Обязательно напиши о числовых значениях этих констант. А то некоторые считают что false = 0 (что верно), а True = 1 (что не совсем верно) ;)
prodam iron
Posts: 10
Joined: 2005-06-06 16:25:46

Post by prodam iron »

А как привязать сам скрипт к какой либо комбинации клавиш?
flake
Expert!
Posts: 746
Joined: 2004-08-11 23:56:17
Location: The Citadel
Contact:

Post by flake »

Для этого:
1. Идем в закладку Hotkeys
2. В строке Command пишем "exec название_функции".
Например, exec AutoHeal
3. Ставим курсор в поле Hotkey, и нажимаем нужное сочетание клавишь (на которое хотим забиндить скрипт)
4. Жмем New
5. Жмем Save
6. Затем, чтобы бинд сохралися, в закладке Main жмем Save.
MAGICUS
Posts: 61
Joined: 2004-10-17 17:20:55

Post by MAGICUS »

а чего делать если пишет что функцию найти не может?
flake
Expert!
Posts: 746
Joined: 2004-08-11 23:56:17
Location: The Citadel
Contact:

Post by flake »

Проверить, соответствуюет ли название функции в хоткиях названию этой же функции в самом скрипте. Реестр учитывается.
Tergos
Posts: 52
Joined: 2005-06-12 09:14:09
Location: Moscow, Russia
Contact:

Post by Tergos »

flake wrote:Проверить, соответствуюет ли название функции в хоткиях названию этой же функции в самом скрипте. Реестр учитывается.

Эмм... АФАИР не реестр, а регистр. :wink:
a1m
Posts: 6
Joined: 2006-06-07 20:50:11

Re: Урок 0. Введение в скрипты.

Post by a1m »

СЛух даи асю плз!!!!!!!!!!!!!!!!!!!!
a1m
Posts: 6
Joined: 2006-06-07 20:50:11

Re: Урок 0. Введение в скрипты.

Post by a1m »

Beyonder
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Во первых - такое пишут в ПМ. А во вторых, если тебе уж очень надо - то постарайся и найдешь. Если не найдешь, то будь уверен что отвечать на твой вопрос я не захочу :)
Post Reply