Биндер | SAMP | Python

idkwhichnickname

Новичок
Автор темы
3
6
Привет всем, вопрос таков - возможно ли сделать Биндер для сампа на языке программирования Python. У меня есть на примете одна библиотека[pyautogui] с которой можно биндить клавиши, но даже если есть такая библиотека, как реализовать чтобы в сампе она работала?
Заранее спасибо.
 

donaks.

Активный
101
67
Пару десятков минут гугления и использования метода тыка.
Для работы нужна библиотека keyboard (pip install keyboard) и еще pywin32, чтобы бинды не срабатывали, когда самп свернут (pip install pywin32).
keyboard.add_hotkey("1", fun) - при нажатии на единичку, выполнится функция fun (бинд на клавишу).
keypress(key) - нажимает на клавишу key (зажимает и через 100 миллисекунд отжимает).
sampIsActive() - возвращает True, если активно окно сампа.
send_to_chat(message) - отправляет строку message в чат, когда самп - это активное окно.
send_messages_to_chat(messages_list, delay) - отправляет список строк messages_list в чат с задержкой delay в секундах (по умолчанию = 0)
Обязательно в конце нужно прописать бесконечный цикл. Либо же keyboard.wait().
Python:
import time

import keyboard
from win32gui import GetWindowText, GetForegroundWindow

def keypress(key):
    keyboard.press(key)
    time.sleep(0.1)
    keyboard.release(key)

def sampIsActive():
    return GetWindowText(GetForegroundWindow()) == "GTA:SA:MP"

def send_to_chat(message):
    if sampIsActive():
        keypress("F6")
        keyboard.write(message)
        keypress('Enter')

def send_messages_to_chat(messages_list, delay=0):
    for message in messages_list:
        send_to_chat(message)
        time.sleep(delay)


keyboard.add_hotkey("Ctrl + 1", lambda: send_to_chat("/me упал, отжался."))
keyboard.add_hotkey("Ctrl + 2", lambda: send_messages_to_chat(
    ["Приветствую, меня зовут Даниил.", "Чем могу быть полезен?"], 2
))

while True:
    pass

PS: Во время того, как скрипт печатает, лучше ничего не нажимать.
 
Последнее редактирование: