Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- все скрипты должны иметь расширение файла .bot
- F2 - старт скрипта test.bot, если уже выполняется ничего не произойдет. надо сначала остановить работающий
- F3 - стоп выполнения любого скрипта
- :bot <name> - команда набирается просто в окне, не надо ни в чат ни куда либо. это системная консоль хнх включается по символу двоеточие ":". имя указывается без расширения .bot
- :set_bot1 <NAME>
- :set_bot2 <NAME>
- ставит имена скриптов для F1 и F2 соответственно.
- соответственно на F1 F2 вешаем имена скриптов
- ****** ОПИСАНИЕ ЯЗЫКА ******
- язык основан на Си. синтаксис аналогичен.
- все ключевые операторы и знаки регистрозависимы! работают только в нижнем регистре! (if, while, return, break...)
- переменные. пока только одного типа int
- массивы. поддерживаются одномерные массивы
- операции: && ! || + - / * (-) < > != == >= <= (все с корректными приоритетами)
- применима префиксная и постфиксная запись к переменным целого типа (a++, --b)
- функции. объявляются аналогично Си. одно глобальное пространство имен. фукнции возвращают пока только int или ничего (нет return).
- можно переопределять фукнции с разными параметрами. т.н. overload
- инклуд. можно инклудить файлы. механизм аналогичен Си. директива "#include <name>" указываются всегда в начале файла
- нужный файл просто встраивается на место директивы
- блоки. блоки операторов огораживаются {} допускается произвольная вложенность. пространство имен внутри каждого блока локализуется
- функция void main() - является точкой входа в скрипт. ее наличие обязательно
- sleep(int time) - приостановить выполнение скрипта на указанное количество милисекунд
- print(<что-то>) - вывести в консоль сообщение - либо число либо строку
- exit - принудительный выход из скрипта
- logout - выход из скрипта и логаут чара
- say(string msg) - сказать в area чат
- специфичные операторы (интегрированы в клиент хнх):
- void do_click(int objid, int btn, int mod)
- послать клик по объекту на карте. объект указывается по objid. кнопка мыши btn (1 - левая. 3 - правая). дополнительные флаги mod (1-шифт. 2-ктрл. 4-альт. 8-вин)
- void map_click(int x, int y, int btn, int mod)
- простой клик по карте. как обычно щелкаем мышью. только координаты относительно игрока
- void map_abs_click(int x, int y, int btn, int mod)
- абсолютный клик по карте. как обычно щелкаем мышью. указываем координаты мира
- void map_move_step(int x, int y)
- передвинутся на указанное количество тайлов от текущей позиции игрока, фактически это map_click всегда с левой кнопкой
- void map_move(int objid, int x, int y)
- бежать к указанной точке. объект и оффсет от него в координатах карты. (1 тайл = 11 точек)
- int my_coord_x()
- int my_coord_y()
- получить мои мировые координаты (абсолютные)
- void map_interact_click(int x, int y, int mod)
- void map_interact_click(int objid, int mod)
- кликнуть по карте (взаимодействие, чтото держим в руках) координаты указываются в тайлах от текущей позиции игрока
- void map_abs_interact_click(int x, int y, int mod)
- то же самое только указываем абсолютные координаты
- void map_place(int x, int y, int btn, int mod)
- поставить объек который хотим построить в указанные координаты относительно игрока. координаты задаем в тайлах
- void select_context_menu(string option_name)
- выбрать опцию в контекстном выпадающем меню над объектом
- void send_action(string name)
- послать действие из меню внизу справа, с одним параметром. параметр видно при щелчке на кнопку в логе по ф12
- laystone - укладка камней. асфальтирование
- carry - перетаскивание объектов (lift)
- void send_action(string name, string name2)
- послать действие из меню внизу справа, если нужно указывать 2 параметра
- int is_cursor(string cursor_name)
- проверяет стоит ли указанный курсор в данный момент
- dig - лопата
- chi - курсор пипетка. появляется когда хотим чето перетаскивать. и надо указать объект
- void drop(int mod)
- дропнуть вещь в руках на землю
- int input_get_object(string msg);
- сказать игроку выбрать объект мышкой. все объекты подсвечиваются зеленым. пользователь должен щелкнуть на какой нить объект тогда управление вернется в скрипт
- msg - выведет сообщение красным цветом на экран
- int find_object_by_name(string name, int radius)
- найти объект по имени, проверяется вхождение имени в имя ресурса, радиус в тайлах
- int find_object_by_type(string type, int radius)
- найти объект по типу, радиус в тайлах. доступные типы:
- tree - дерево
- int find_map_object(String name, int radius, int x, int y)
- найти объект по оффсету от себя в заданном радиусе и с заданным именем. ВНИМАНИЕ!!! радиус в точках карты. отступ в тайлах
- если имя не указано (пустая строка) ищет любой объект в заданном радиусе
- int have_inventory(string name)
- проверить наличие инвентаря по имени
- void open_inventory()
- открыть мой инвентарь
- void set_inventory(string name)
- поставить текущий инвентарь, после автоматически сбрасывается итератор
- void reset_inventory()
- сбросить итератор итемов в инвентаре
- int next_item()
- вызывать итератор для установки итема
- 0 - если вещи нет (прошли весь список). 1 если есть
- int get_items_count()
- получить количество вещей в списке
- void set_item_index(int index)
- установить текущую вещь по индексу в списке
- void set_item_drag()
- установить текущей вещью - то что держим в руках если оно есть. (чтобы получить ее параметры)
- void set_item_equip(int index)
- установить текущей вещью - вещь из инвентаря. указываем индекс (чтобы получить ее параметры)
- получаем параметры текущей вещи установленной итератором
- int is_item_name(string name) - 0 или 1 совпадает ли имя вещи
- int is_item_tooltip(string name) - 0 или 1 совпадает ли тултип (всплывающая подсказка на вещи)
- int item_quality() - возвращает качество
- void item_click(string action) - щелчок по вещи
- void item_click(string action, int mod) - щелчок по вещи, с модификатором клавиатуры
- команды (action):
- take - взять вещь
- itemact - взаимодействие на вещь. чтото держим в руках и щелкаем правой кнопкой по вещи
- transfer - переместить. щелчек лкм с зажатым шифтом
- iact - фактически правый щелчек по вещи. для вызова контекстного меню
- drop - дропнуть вещь на землю. щелчек лкм с зажатым контролом
- int item_coord_x() - координаты вещи в инвентаре
- int item_coord_y()
- int item_num() - получить цифру возле итема. пример: стадия червяков шелкопрядов. рисуетя вверху слева у вещи.
- int item_meter() - получить прогресс итема. пример: сушка. круглешок на шкуре. принимаем значения от 0 до 100.
- void item_drop(int x, int y) - положить вещь которую держим в руках в текущий инвентарь установленный set_inventory. в указанные координаты. нумерация клеток с нуля
- void inventory(string name, int x, int y, string action)
- void inventory(string name, int x, int y, string action, int mod) - тоже самое но с модификатором клавиатуры
- дать команду вещи в инвентаре с указаныым именем. по указанным координатам вещи в этом инвентаре.
- take - взять вещь
- itemact - взаимодействие на вещь. чтото держим в руках и щелкаем правой кнопкой по вещи
- transfer - переместить. щелчек лкм с зажатым шифтом
- iact - фактически правый щелчек по вещи. для вызова контекстного меню
- drop - дропнуть вещь на землю. щелчек лкм с зажатым контролом
- void item_drop_to_inventory(String name, int x, int y)
- дропнуть вещь в указанный инвентарь, допустим когда надо из моего инвентаря не закрывая его дропнуть в шкаф или ящик
- int check_craft(string wnd)
- проверить есть ли окно крафта с указанным заголовком
- void wait_craft(string wnd)
- подождать появления и готовности окна с указанным заголовком
- void craft(int all)
- скрафтить вещь. all - 0 или 1. если 1 - то крафтим все. если 0 только одну вещь. перед крафтом надо каким то образом открыть окно крафта
- void equip(int slot, string action)
- дать команду в эквип (одевалку), указываем какому слоту даем команду и саму команду
- слоты: hh_slots.png
- команды:
- take - взять вещь из слота
- itemact - взаимодействие на вещь. чтото держим в руках и щелкаем правой кнопкой по вещи
- transfer - переместить. щелчек лкм с зажатым шифтом
- iact - фактически правый щелчек по вещи. для вызова контекстного меню
- drop - дропнуть вещь которую держим в руках в указанный слот.
- void render_mode(int enabled)
- включить/выключить (0 или 1) рендер в клиенте. нужно для экономии ресурсов
- int get_object_blob(int id, int index)
- получить данные из мессаги объекта. именно так задаются стадрии роста ( пример: get_object_blob(34676844, 0) вернет стадию роста указанного объекта если там есть данные. либо вернет 0)
- void reset_buff()
- сбросить итератор бафов
- int next_buff()
- перейти на следующий элемент баф листа. вернет либо 0 если уже конец. либо 1 если перешли на след бафф
- int buff_meter()
- вернет показатель шкалы под баффом (от 0 до 100)
- int buff_time_meter()
- вернет оставшееся время до истечения баффа (от 0 до 100), чем ближе к 0 тем меньше времени осталось
- int is_buff_name(string name)
- проверить имя баффа на вхождение строки. вернет 0 или 1
- void build_click()
- нажать кнопку строительства в окошке билда
- игровые переменные:
- int HourGlass - 0 или 1 - есть песочные часы или нет
- int Hungry - абсолютное значение голода
- int HP - хп
- int Stamina - стамина
- int PlayerID - ид моего чара
- int Moving - 0 или 1 двигается ли мой персонаж
- int ContextMenuReady - 0 или 1 готово ли контекстное меню к работе (полностью раскрыто и готово к приему команды)
- int DraggingItem - 0 или 1 есть ли вещь в руках. перетаскиваем ли чего нибудь. НЕ над чаром. а в руках. то что бегает за курсором.
- int CraftReady - 0 или 1 готово ли окно крафта к приему команды
- int BuildReady - есть ли окно билда чего либо. 0 или 1
Advertisement
Add Comment
Please, Sign In to add comment