HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Python
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 21.08.2020, 21:43
donaks.
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами: 3474656

Репутация: 83
По умолчанию

Чекал я бласт хак и наткнулся на запрос сделать биндер на питоне. Без понятия зачем это ему было нужно. Через пару десятков минут он был готов. Хз зачем это надо, но пусть это будет здесь. Работает не хуже ахк, только нужно подгрузить библиотеки.

Для работы нужна библиотека keyboard (
Код:
pip install keyboard
) и еще pywin32, чтобы бинды не срабатывали, когда самп свернут (
Код:
pip install pywin32
).

Код:
keyboard.add_hotkey("1", fun)
- при нажатии на единичку, выполнится функция fun (бинд на клавишу).

Код:
keypress(key)
- нажимает на клавишу key (зажимает и через 100 миллисекунд отжимает).

Код:
is_samp_active()
- возвращает True, если окно сампа активно.

Код:
send_to_chat(message)
- отправляет строку message в чат, если окно сампа активно.

Код:
send_messages_to_chat(messages_list, delay)
- отправляет список строк messages_list в чат с задержкой delay в секундах (по умолчанию = 0)

Обязательно в конце нужно прописать бесконечный цикл. Либо же
Код:
keyboard.wait()
, чтобы скрипт не прекратил работу.

Если скрипт запущен в консоли, остановить его можно сочетанием клавиш 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
 
Ответить с цитированием

  #2  
Старый 21.08.2020, 21:44
Lil Xean
Участник форума
Регистрация: 06.03.2019
Сообщений: 213
С нами: 3785397

Репутация: 113
По умолчанию

зачем адреса памяти если есть эмуляция нажатия f6?
 
Ответить с цитированием

  #3  
Старый 21.08.2020, 21:55
donaks.
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами: 3474656

Репутация: 83
По умолчанию

Цитата:
Сообщение от Lil Xean  

О да моя госпожа 🙂, зачем адреса памяти если есть эмуляция нажатия f6?
Работает он по аналогии с AHK. За адреса памяти не шарю.
 
Ответить с цитированием

  #4  
Старый 21.08.2020, 23:00
Rei
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами: 4686777

Репутация: 183


По умолчанию

Зачем вот, например, для проверки на самп отдельная функция?
 
Ответить с цитированием

  #5  
Старый 22.08.2020, 00:20
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от Rei  

Зачем вот, например, для проверки на самп отдельная функция?
Зачем вот, например, для работы со штукатуркой шпатель? Зачем вот, например, для готовки нужны сковороды и кастрюли? Зачем вот например для стирки стиральная машина? Зачем вот, например, для мойки посуды посудомоечная Машина?

Удобно, проще и быстрее потому что. Не?
 
Ответить с цитированием

  #6  
Старый 22.08.2020, 01:35
Rei
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами: 4686777

Репутация: 183


По умолчанию

Цитата:
Сообщение от KiN4StAt  

Зачем вот, например, для работы со штукатуркой шпатель? Зачем вот, например, для готовки нужны сковороды и кастрюли? Зачем вот например для стирки стиральная машина? Зачем вот, например, для мойки посуды посудомоечная Машина?

Удобно, проще и быстрее потому что. Не?
Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?

Про сравнения твои охуительные я вообще молчу
 
Ответить с цитированием

  #7  
Старый 22.08.2020, 02:10
donaks.
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами: 3474656

Репутация: 83
По умолчанию

Цитата:
Сообщение от Rei  

Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?
Про сравнения твои охуительные я вообще молчу
Может мне весь код сжать в одно лямбда выражение?)
 
Ответить с цитированием

  #8  
Старый 22.08.2020, 02:14
winten
Постоянный
Регистрация: 30.03.2017
Сообщений: 408
С нами: 4800741

Репутация: 98
По умолчанию

Цитата:
Сообщение от donaks.  

Может мне весь код сжать в одно лямбда выражение?)
Он про то, что у тебя код, который один раз используется зачем то вынесен в отдельную функцию
 
Ответить с цитированием

  #9  
Старый 22.08.2020, 09:07
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Кстати если есть коллбэк на кнопки то можно и без while True вроде

Цитата:
Сообщение от Rei  

Удобно, проще и быстрее одну строчку, использующуюся 1 раз, совать в отдельную функцию?
Про сравнения твои охуительные я вообще молчу
Вдруг потом пригодится лол. На питоне нет инлайн функций к сожалению
 
Ответить с цитированием

  #10  
Старый 22.08.2020, 10:08
donaks.
Участник форума
Регистрация: 07.10.2019
Сообщений: 101
С нами: 3474656

Репутация: 83
По умолчанию

Цитата:
Сообщение от winten  

Он про то, что у тебя код, который один раз используется зачем то вынесен в отдельную функцию
И что? Сделано для удобства и понимания. Когда посмотришь на имя функции сразу понимаешь что она делает. Если код придется расширять или переписывать данная функция пригодится. И код более высокоуровневый получается.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.