From Stealth Client

Jump to: navigation, search

Python

Для того что бы запустить скрипт написанный на питоне нужно что бы он находился в файле с расширением .py, к примеру mytest.py. В ином случае запускается интерпретатор Pascal.

Стелс для исполнения питон-скриптов использует обыкновенный интерпретатор, который нужно скачать с официального сайта: [[1]]. Работают интерпретаторы версий 2.6-3.6 (кроме 3.5-х64 и 3.6-х64). Желательно использовать последнюю версию. В последних версиях стелса, в настройках, можно выбрать конкретный интерпретатор, если у Вас их несколько.

Если Вы запускаете скрипт не из стелса, а как внешний скрипт, то Вам необходимо сначала выполнить такой код

import sys
 
from py_stealth import *
 
if '' == b'':  # py2
    exe = sys.executable
else:  # py3
    exe = sys.executable.encode()
StartStealthSocketInstance(exe)

Пакет py_stealth, естественно, должен быть в доступности у системы импорта. Проще говоря, путь до корневого каталога стелса должен быть в sys.path.

import sys
 
 
sys.path.append('c:\stealth')

Простой скрипт может состоять из одного файла, к примеру:

while True:
  UseSkill ('Hiding')
  Wait (11000)

В супер сложных и навороченных скриптах или в целях повторного использования кода может пригодится использование такой команды как **import**

import mycode
 
while True:
  mycode.myfunc ()
  Wait (11000)

Команда import действует по схожему принципу с {$Include 'hungry.inc'} Что бы иметь доступ к функциям стелса внутри импортируемого модуля нужно там выполнить команду "from py_stealth import *"

from py_stealth import *
 
while True:
  UseSkill ('Hiding')
  Wait (11000)

По синтаксису языка советую почитать книгу [2]

или эту [3]

Примеры кода есть тут [4]

Практически все функции по взаимодействию со стелсом остались в таком же виде как были в скриптах на паскале. Исключение составляют функции типа Doc:Api/GetPathArray, которым нужно было передавать переменную массива которую они заполняли, в случае с питоном - такие функции возвращают массив данных.

Можно пользоваться справочником тут в вики: Справочник или Stealth API

Русский язык в скриптах

Что бы в скриптах можно было выводить сообщения на русском, нужно кодировать файлы в кодировке UTF-8. Так же можно использовать свою кодировку

# -*- coding: mbcs -*-
 
print('привет')

Отличия от Pascal Script

В паскале можно функции без параметров(процедуры) вызывать без скобок, к примеру **Ground**

В питоне такая фишка не работает, нужно явно добавлять пустые скобки: **Ground()**

В паскале шестнадцатеричные числа обозначаются как **$AAAAAAAA**

В питоне чуть иначе: **0xAAAAAAAA**

Переменные типа moveOpenDoor и остальные такие реализованы в виде функций

SetMoveOpenDoor(True) GetMoveOpenDoor()

Питон - регистрозависимый язык(в отличии от PascalScript). Это значит что UseObject и useobject - это разные функции. По-этому нужно учитывать, что функции все начинаются с большой буквы(как в документации).

Пример скрипта

from datetime import datetime
 
 
def PrepareKindling():
    WaitTargetTile(3296, 1700, 1626, 5) # tree
    UseObject(ObjAtLayer(RhandLayer())) # skid dagger
    if not WaitJournalLine(datetime.now(), 'You chip off some kindling', 60000):
        return False
    MoveItem(FindType(0x0DE1, Backpack()), 1, Ground(), 0,0,0)
    Wait(1000)
    return True
 
while True:
    if FindType(0x0DE1, Ground()) or PrepareKindling():
        UseObject(FindType(0x0DE1, Ground())) # skid sawdust
        Wait(5000)

И ещё пару советов:

Не называйте ваши пайтон-файлы (да-да, язык читается как пайтон, но питон душе ближе) именами модулей и пакетов из стандартной библиотеки, например test.py

Прочтите PEP8

Задавайте вопросы по питону на форуме. Разработчику стелса очень интересна тема питона.

Не пользуйтесь стелсовским редактором скриптов