From Stealth Client

Jump to: navigation, search
(Python)
(Python)
Line 1: Line 1:
= Python =
= Python =
-
Для того что бы запустить скрипт написанный на питоне нужно что бы он находился в файле с расширением '''.py''', к примеру '''test.py'''. В ином случае запускается интерпретатор Pascal.
+
Для того что бы запустить скрипт написанный на питоне нужно что бы он находился в файле с расширением '''.py''', к примеру '''mytest.py'''. В ином случае запускается интерпретатор Pascal.
-
Стелс для исполнения питон-скриптов использует обыкновенный интерпретатор, который нужно скачать с официального сайта: [[http://python.org/download/|http://python.org/download/]]. Работает и 2.7 и 3.2 версии интерпретаторов. Желательно использовать версию 3.2. После установки нужно перезапустить стелс.
+
Стелс для исполнения питон-скриптов использует обыкновенный интерпретатор, который нужно скачать с официального сайта: [[http://python.org/download/|http://python.org/downloads/]]. Работают интерпретаторы версий 2.6-3.6 (кроме 3.5-х64 и 3.6-х64). Желательно использовать последнюю версию. В последних версиях стелса, в настройках, можно выбрать конкретный интерпретатор, если у Вас их несколько.
-
Все функции стелса находятся в модуле '''stealth'''. Перед запуском скрипта всегда автоматически выполняется такая команда(нет нужды её повторять):
+
Если Вы запускаете скрипт не из стелса, а как внешний скрипт, то Вам необходимо сначала выполнить такой код
<source lang="python">
<source lang="python">
-
from stealth import *
+
import sys
 +
 
 +
from py_stealth import *
 +
 
 +
if '' == b'':  # py2
 +
    exe = sys.executable
 +
else:  # py3
 +
    exe = sys.executable.encode()
 +
StartStealthSocketInstance(exe)
 +
</source>
 +
Пакет py_stealth, естественно, должен быть в доступности у системы импорта. Проще говоря, путь до корневого каталога стелса должен быть в '''sys.path'''.
 +
<source lang="python">
 +
import sys
 +
 
 +
 
 +
sys.path.append('c:\stealth')
</source>
</source>
-
соответственно все функции импортируются в пространство имен скрипта.
 
Простой скрипт может состоять из одного файла, к примеру:
Простой скрипт может состоять из одного файла, к примеру:
Line 28: Line 42:
Команда '''import''' действует по схожему принципу с {$Include 'hungry.inc'}
Команда '''import''' действует по схожему принципу с {$Include 'hungry.inc'}
-
Что бы иметь доступ к функциям стелса внутри импортируемого модуля нужно там выполнить команду "'''from stealth import *'''"
+
Что бы иметь доступ к функциям стелса внутри импортируемого модуля нужно там выполнить команду "'''from py_stealth import *'''"
<source lang="python">
<source lang="python">
-
from stealth import *
+
from py_stealth import *
while True:
while True:
Line 45: Line 59:
Практически все функции по взаимодействию со стелсом остались в таком же виде как были в скриптах на паскале. Исключение составляют функции типа [[Doc:Api/GetPathArray]], которым нужно было передавать переменную массива которую они заполняли, в случае с питоном - такие функции возвращают массив данных.
Практически все функции по взаимодействию со стелсом остались в таком же виде как были в скриптах на паскале. Исключение составляют функции типа [[Doc:Api/GetPathArray]], которым нужно было передавать переменную массива которую они заполняли, в случае с питоном - такие функции возвращают массив данных.
-
У всех функций заполнен __doc__ блок. по этому с помощью
+
Можно пользоваться справочником тут в вики: [[Doc:RU/Tutorial/Reference|Справочник]] или [[Doc:Api|Stealth API]]
-
<source lang="python">
+
-
print (GetPathArray.__doc__)
+
-
</source>
+
-
можно посмотреть какие параметры ожидает та или иная функция
+
-
 
+
-
вывод: GetPathArray( DestX : Integer, DestY : Integer, Optimized : Boolean, Accuracy : Integer ) -> List of Tuple(X, Y, Z : Integer)
+
-
 
+
-
так же можно пользоватся справочником тут в вики: [[Doc:RU/Tutorial/Reference|Справочник]] или [[Doc:Api|Stealth API]]
+
== Русский язык в скриптах ==
== Русский язык в скриптах ==
-
что бы в скриптах можно было выводить сообщения на русском, нужно первой строкой в скрипте поставить вот это:
+
Что бы в скриптах можно было выводить сообщения на русском, нужно кодировать файлы в кодировке '''UTF-8'''. Так же можно использовать свою кодировку
<source lang="python">
<source lang="python">
# -*- coding: mbcs -*-
# -*- coding: mbcs -*-
 +
print('привет')
print('привет')
</source>
</source>
Line 75: Line 82:
SetMoveOpenDoor(True) GetMoveOpenDoor()
SetMoveOpenDoor(True) GetMoveOpenDoor()
-
Питон - регистро-зависимый язык(в отличии от PascalScript). Это значит что UseObject и useobject - это разные функции. По-этому нужно учитывать, что функции все начинаются с большой буквы(как в документации).
+
Питон - регистрозависимый язык(в отличии от PascalScript). Это значит что UseObject и useobject - это разные функции. По-этому нужно учитывать, что функции все начинаются с большой буквы(как в документации).
== Пример скрипта ==
== Пример скрипта ==
<source lang="python">
<source lang="python">
from datetime import datetime
from datetime import datetime
-
def PrepareKindling ():
+
 
-
     WaitTargetTile (3296, 1700, 1626, 5) # tree
+
def PrepareKindling():
-
     UseObject (ObjAtLayer (RhandLayer ())) # skid dagger
+
     WaitTargetTile(3296, 1700, 1626, 5) # tree
-
     if not WaitJournalLine (datetime.now (), 'You chip off some kindling', 60000):
+
     UseObject(ObjAtLayer(RhandLayer())) # skid dagger
 +
     if not WaitJournalLine(datetime.now(), 'You chip off some kindling', 60000):
         return False
         return False
-
     MoveItem (FindType (0x0DE1, Backpack ()), 1, Ground (), 0,0,0)
+
     MoveItem(FindType(0x0DE1, Backpack()), 1, Ground(), 0,0,0)
-
     Wait (1000)
+
     Wait(1000)
     return True
     return True
while True:
while True:
-
     if FindType (0x0DE1, Ground ()) or PrepareKindling ():
+
     if FindType(0x0DE1, Ground()) or PrepareKindling():
-
         UseObject (FindType (0x0DE1, Ground ())) # skid sawdust
+
         UseObject(FindType(0x0DE1, Ground())) # skid sawdust
-
         Wait (5000)
+
         Wait(5000)
</source>
</source>
 +
 +
И ещё пару советов:
 +
 +
Не называйте ваши пайтон-файлы (да-да, язык читается как пайтон, но питон душе ближе) именами модулей и пакетов из стандартной библиотеки, например '''test.py'''
 +
 +
Прочтите PEP8
 +
 +
Задавайте вопросы по питону на форуме. Разработчику стелса очень интересна тема питона.

Revision as of 04:52, 2 January 2018

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

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