Помощь по программированию на Python в боте PYTHON_BOT, руководство по взаимодействию с системой AW.
Основные принципы работы бота, в простой структурной схеме.
(Технически схема для простоты понимания построена не совсем правильно, но логически верно)
[img][/img]
ОСНОВНАЯ ПРОГРАММА (собственно сам бот) обменивается данными с сервером AW через посредника, библиотеку AW.DLL, которая функционирует в области неуправляемого кода. В классе AWDLL (который уже работает в режиме управляемого кода) и осуществляется трансферт из неуправляемого кода в управляемый и наоборот. Сами процедуры трансферта исполняет УПРАВЛЯЮЩИЙ КОД. Все взаимодействие с мирами, как самого бота, так и программы, написанной на питоне (для интерпретатора питона), непосредственно осуществляется только через КЛАСС AWDLL.Это основной базовый принцип работы всей программы БОТа. Его надо четко понимать.
Пойдем дальше..
[img][/img]
ОСНОВНАЯ ПРОГРАММА лежит в области видимости пространства имен pythonbot
Поэтому, чтобы иметь возможность из интерпретатора питона вообще хоть чем либо управлять в программе, надо питону это пространство имен ОБЪЯВИТЬ, чтобы он мог видеть и работать со всеми компонентами, объектами и классами, находящимися в этом пространстве имен.
Делается это одной простой строкой в самом начале программы: import pythonbot
Далее мы создаем (для удобства обращения к форме) наш объект MAIN_FORM, которому присваиваем указатель на нашу единственную форму. Сигнатура указателя следующая: pythonbot – заходим в пространство имен бота =>THIS_FORM – обращаемся к классу THIS_FORM, в котором храниться объект CurrentForm. А вот объекту CurrentForm уже присвоен указатель на нашу форму в коде C#.
MAIN_FORM=pythonbot.THIS_FORM.CurrentForm
Среду для работы нашего бота мы подготовили, теперь осталось выполнить вход (подключить бота к серверу AW и войти в нужный нам мир)...
MAIN_FORM.RUN_BOT("Имя бота", "Пароль привилегий", "Номер гражданства", "Мир, куда логиниться", Координаты бота Х, Координаты бота Y, Координаты бота Z, Угол поворота, Номер типа аватара для бота)
ПРИМЕР: MAIN_FORM.RUN_BOT("MY_BOT", "45774", "15487", "Terra", 0, 0, 0, 0, 70)
Дальше просто
pythonbot.AWDLL.aw_wait(5) # Просто пишем, в дальнейшем расскажу об этой команде подробнее
pythonbot.AWDLL.aw_say("Привет мир !") # Выводим в чат сообщение "Привет мир !"
MAIN_FORM.SCRYPT_PLAY=False # Сообщаем программе что поток нам больше не нужен (обязательно)
MAIN_FORM.SetTextSafe('БОТ ВЫШЕЛ ИЗ МИРА') #Сообщение о выходе ()
MAIN_FORM.STOP_BOT() #Остановка и уничтожение бота (освобождаем память, обязательно)
ПОЛНЫЙ КОД СКРИПТА:
import pythonbot
MAIN_FORM=pythonbot.THIS_FORM.CurrentForm
MAIN_FORM.RUN_BOT("mybot", "12345", "54321", "stroybat", 0, 0, 0, 0, 70)
pythonbot.AWDLL.aw_wait(5)
pythonbot.AWDLL.aw_say("Привет мир !")
MAIN_FORM.SCRYPT_PLAY=False
MAIN_FORM.SetTextSafe('БОТ ВЫШЕЛ ИЗ МИРА')
MAIN_FORM.STOP_BOT()