 |
|

21.08.2020, 21:43
|
|
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами:
3474656
Репутация:
83
|
|
Чекал я бласт хак и наткнулся на запрос сделать биндер на питоне. Без понятия зачем это ему было нужно. Через пару десятков минут он был готов. Хз зачем это надо, но пусть это будет здесь. Работает не хуже ахк, только нужно подгрузить библиотеки.
Для работы нужна библиотека keyboard (
Код:
pip install keyboard
) и еще pywin32, чтобы бинды не срабатывали, когда самп свернут (
).
Код:
keyboard.add_hotkey("1", fun)
- при нажатии на единичку, выполнится функция fun (бинд на клавишу).
- нажимает на клавишу key (зажимает и через 100 миллисекунд отжимает).
- возвращает True, если окно сампа активно.
Код:
send_to_chat(message)
- отправляет строку message в чат, если окно сампа активно.
Код:
send_messages_to_chat(messages_list, delay)
- отправляет список строк messages_list в чат с задержкой delay в секундах (по умолчанию = 0)
Обязательно в конце нужно прописать бесконечный цикл. Либо же
, чтобы скрипт не прекратил работу.
Если скрипт запущен в консоли, остановить его можно сочетанием клавиш Ctrl+C.
Python:
Код:
from
time
import
sleep
import
keyboard
from
win32gui
import
GetWindowText
,
GetForegroundWindow
def
keypress
(
key
)
:
keyboard
.
press
(
key
)
sleep
(
0.1
)
keyboard
.
release
(
key
)
def
is_samp_active
(
)
:
return
GetWindowText
(
GetForegroundWindow
(
)
)
==
"GTA:SA:MP"
def
send_to_chat
(
message
)
:
if
is_samp_active
(
)
:
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
)
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
|
|
|

21.08.2020, 21:44
|
|
Участник форума
Регистрация: 06.03.2019
Сообщений: 213
С нами:
3785397
Репутация:
113
|
|
зачем адреса памяти если есть эмуляция нажатия f6?
|
|
|

21.08.2020, 21:55
|
|
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами:
3474656
Репутация:
83
|
|
Сообщение от Lil Xean
О да моя госпожа 🙂, зачем адреса памяти если есть эмуляция нажатия f6?
Работает он по аналогии с AHK. За адреса памяти не шарю.
|
|
|

21.08.2020, 23:00
|
|
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами:
4686777
Репутация:
183
|
|
Зачем вот, например, для проверки на самп отдельная функция?
|
|
|

22.08.2020, 00:20
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Rei
Зачем вот, например, для проверки на самп отдельная функция?
Зачем вот, например, для работы со штукатуркой шпатель? Зачем вот, например, для готовки нужны сковороды и кастрюли? Зачем вот например для стирки стиральная машина? Зачем вот, например, для мойки посуды посудомоечная Машина?
Удобно, проще и быстрее потому что. Не?
|
|
|

22.08.2020, 01:35
|
|
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами:
4686777
Репутация:
183
|
|
Сообщение от KiN4StAt
Зачем вот, например, для работы со штукатуркой шпатель? Зачем вот, например, для готовки нужны сковороды и кастрюли? Зачем вот например для стирки стиральная машина? Зачем вот, например, для мойки посуды посудомоечная Машина?
Удобно, проще и быстрее потому что. Не?
Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?
Про сравнения твои охуительные я вообще молчу
|
|
|

22.08.2020, 02:10
|
|
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами:
3474656
Репутация:
83
|
|
Сообщение от Rei
Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?
Про сравнения твои охуительные я вообще молчу
Может мне весь код сжать в одно лямбда выражение?)
|
|
|

22.08.2020, 02:14
|
|
Постоянный
Регистрация: 30.03.2017
Сообщений: 408
С нами:
4800741
Репутация:
98
|
|
Сообщение от donaks.
Может мне весь код сжать в одно лямбда выражение?)
Он про то, что у тебя код, который один раз используется зачем то вынесен в отдельную функцию
|
|
|

22.08.2020, 09:07
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Кстати если есть коллбэк на кнопки то можно и без while True вроде
Сообщение от Rei
Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?
Про сравнения твои охуительные я вообще молчу
Вдруг потом пригодится лол. На питоне нет инлайн функций к сожалению
|
|
|

22.08.2020, 10:08
|
|
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами:
3474656
Репутация:
83
|
|
Сообщение от winten
Он про то, что у тебя код, который один раз используется зачем то вынесен в отдельную функцию
И что? Сделано для удобства и понимания. Когда посмотришь на имя функции сразу понимаешь что она делает. Если код придется расширять или переписывать данная функция пригодится. И код более высокоуровневый получается.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|