-
Автор темы
- #1
Всем привет! Сегодня я нашел для вас исходник полезной программы для автоматического и быстрого выбора перса, за которого вы будете играть в катке. Эта прога распространена в Лиге Легенд, но и добралась до Валоранта. Её название Instant Lock. Автор: DavidUmm
Что это за программа?
Instalock позволяет предварительно задать агента, за которого вы хотите играть и когда матч найдётся, прога автоматически его пикнет, никто другой не сможет его взять раньше вас. Всё делается через API Валика, поэтому за бан можно даже не думать. Тот же самый АПИ используют Valorant Tracker, чтобы чекать статистику. У проги достаточно приятная менюшка, удобная и понятная, поэтому надеюсь проблем с настройкой не возникнет.
Что нужно чтоб запустить?
- Питон версии 3.10.0;
- PyQt6 (для менюшки);
- Valclient библиотеки.
pip install PyQt6
pip install valclient
pip install requests
- Далее перейдите в папку с сурсом:
cd <your files path>
- Теперь запустите программу:
py <your files name>.py
Сам исходник этого инсталокера:
Python:
import sys
import time
from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QComboBox, QPushButton, QLabel)
from PyQt6.QtCore import Qt, QThread, pyqtSignal
from PyQt6.QtGui import QColor, QPalette
from valclient.client import Client
class ValorantAgentInstalocker:
def __init__(self):
self.running = True
self.agents = {
"jett": "add6443a-41bd-e414-f6ad-e58d267f4e95",
"reyna": "a3bfb853-43b2-7238-a4f1-ad90e9e46bcc",
"raze": "f94c3b30-42be-e959-889c-5aa313dba261",
"yoru": "7f94d92c-4234-0a36-9646-3a87eb8b5c89",
"phoenix": "eb93336a-449b-9c1b-0a54-a891f7921d69",
"neon": "bb2a4828-46eb-8cd1-e765-15848195d751",
"breach": "5f8d3a7f-467b-97f3-062c-13acf203c006",
"skye": "6f2a04ca-43e0-be17-7f36-b3908627744d",
"sova": "320b2a48-4d9b-a075-30f1-1f93a9b638fa",
"kayo": "601dbbe7-43ce-be57-2a40-4abd24953621",
"killjoy": "1e58de9c-4950-5125-93e9-a0aee9f98746",
"cypher": "117ed9e3-49f3-6512-3ccf-0cada7e3823b",
"sage": "569fdd95-4d10-43ab-ca70-79becc718b46",
"chamber": "22697a3d-45bf-8dd7-4fec-84a9e28c69d7",
"omen": "8e253930-4c05-31dd-1b6c-968525494517",
"brimstone": "9f0d8ba9-4140-b941-57d3-a7ad57c6b417",
"astra": "41fb69c1-4189-7b37-f117-bcaf1e96f1bf",
"viper": "707eab51-4836-f488-046a-cda6bf494859",
"fade": "dade69b4-4f5a-8528-247b-219e5a1facd6",
"gekko": "e370fa57-4757-3604-3648-499e1f642d3f",
"harbor": "95b78ed7-4637-86d9-7e41-71ba8c293152",
"deadlock": "cc8b64c8-4b25-4ff9-6e7f-37b4da43d235",
"iso": "0e38b510-41a8-5780-5e8f-568b2a4f2d6c",
"clove": "1dbf2edd-4729-0984-3115-daa5eed44993",
"vyze": "eb85b0c8-4258-e95e-f433-0db2e21f857"
}
self.seenMatches = []
self.region = "na"
self.preferred_agent = "jett"
self.status_callback = None
def stop(self):
self.running = False
def set_status_callback(self, callback):
self.status_callback = callback
def update_status(self, message):
if self.status_callback:
self.status_callback(message)
def initialize_client(self):
while self.running:
try:
self.client = Client(region=self.region)
self.client.activate()
self.update_status("Client initialized successfully")
self.run_instalocker()
except Exception as e:
self.update_status(f"Error initializing client: {e}")
time.sleep(2)
def run_instalocker(self):
while self.running:
time.sleep(1)
try:
session_state = self.client.fetch_presence(self.client.puuid)['sessionLoopState']
match_id = self.client.pregame_fetch_match()['ID']
if session_state == "PREGAME" and match_id not in self.seenMatches:
agent_id = self.agents[self.preferred_agent]
self.client.pregame_select_character(agent_id)
self.client.pregame_lock_character(agent_id)
self.seenMatches.append(match_id)
self.update_status(f'Successfully Locked {self.preferred_agent.capitalize()}')
except Exception as e:
if not self.running:
break
if "pregame" not in str(e).lower():
self.update_status(f"Waiting for agent select...")
class InstalockThread(QThread):
status_signal = pyqtSignal(str)
def __init__(self, instalocker):
super().__init__()
self.instalocker = instalocker
self.instalocker.set_status_callback(self.emit_status)
def emit_status(self, message):
self.status_signal.emit(message)
def run(self):
self.instalocker.initialize_client()
class ModernWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
# Variables for window dragging
self.dragging = False
self.offset = None
self.instalocker = ValorantAgentInstalocker()
self.init_ui()
def init_ui(self):
# Create main widget and layout
main_widget = QWidget()
self.setCentralWidget(main_widget)
layout = QVBoxLayout()
main_widget.setLayout(layout)
# Style the main widget
main_widget.setStyleSheet("""
QWidget {
background-color: #1a1a1a;
border-radius: 10px;
color: white;
}
QComboBox {
background-color: #2d2d2d;
border: none;
border-radius: 5px;
padding: 8px;
color: white;
min-width: 200px;
margin: 5px;
}
QComboBox::drop-down {
border: none;
}
QComboBox::down-arrow {
image: none;
border: none;
}
QPushButton {
background-color: #5865F2;
border: none;
border-radius: 5px;
padding: 10px;
color: white;
font-weight: bold;
margin: 5px;
}
QPushButton:hover {
background-color: #4752C4;
}
QLabel {
color: white;
font-size: 14px;
padding: 5px;
}
""")
# Title
title = QLabel("Valorant Instalocker")
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
title.setStyleSheet("font-size: 18px; font-weight: bold; padding: 10px;")
layout.addWidget(title)
# Agent Label
agent_label = QLabel("Select Agent:")
agent_label.setAlignment(Qt.AlignmentFlag.AlignLeft)
layout.addWidget(agent_label)
# Agent selection
self.agent_combo = QComboBox()
self.agent_combo.addItems(sorted(self.instalocker.agents.keys()))
self.agent_combo.setCurrentText(self.instalocker.preferred_agent)
layout.addWidget(self.agent_combo)
# Region Label
region_label = QLabel("Select Region:")
region_label.setAlignment(Qt.AlignmentFlag.AlignLeft)
layout.addWidget(region_label)
# Region selection
self.region_combo = QComboBox()
self.region_combo.addItems(["na", "eu", "ap", "kr", "latam", "br"])
self.region_combo.setCurrentText(self.instalocker.region)
layout.addWidget(self.region_combo)
# Status label
self.status_label = QLabel("Ready to start")
self.status_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.status_label.setWordWrap(True)
layout.addWidget(self.status_label)
# Start/Stop button
self.toggle_button = QPushButton("Start Instalocking")
self.toggle_button.clicked.connect(self.toggle_instalock)
layout.addWidget(self.toggle_button)
# Close button
close_button = QPushButton("Close")
close_button.clicked.connect(self.close)
close_button.setStyleSheet("""
QPushButton {
background-color: #dc3545;
}
QPushButton:hover {
background-color: #bb2d3b;
}
""")
layout.addWidget(close_button)
# Set fixed size and position
self.setFixedSize(300, 400)
self.center()
def center(self):
screen = QApplication.primaryScreen().geometry()
size = self.geometry()
self.move(
(screen.width() - size.width()) // 2,
(screen.height() - size.height()) // 2
)
def mousePressEvent(self, event):
if event.button() == Qt.MouseButton.LeftButton:
self.dragging = True
self.offset = event.pos()
def mouseMoveEvent(self, event):
if self.dragging and self.offset:
self.move(self.pos() + event.pos() - self.offset)
def mouseReleaseEvent(self, event):
if event.button() == Qt.MouseButton.LeftButton:
self.dragging = False
def toggle_instalock(self):
if self.toggle_button.text() == "Start Instalocking":
self.instalocker.preferred_agent = self.agent_combo.currentText()
self.instalocker.region = self.region_combo.currentText()
self.instalocker.running = True
self.instalock_thread = InstalockThread(self.instalocker)
self.instalock_thread.status_signal.connect(self.update_status)
self.instalock_thread.start()
self.toggle_button.setText("Stop Instalocking")
self.status_label.setText("Initializing...")
# Disable controls while running
self.agent_combo.setEnabled(False)
self.region_combo.setEnabled(False)
else:
self.instalocker.stop()
self.toggle_button.setText("Start Instalocking")
self.status_label.setText("Stopped")
# Re-enable controls
self.agent_combo.setEnabled(True)
self.region_combo.setEnabled(True)
def update_status(self, message):
self.status_label.setText(message)
def closeEvent(self, event):
self.instalocker.stop()
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = ModernWindow()
window.show()
sys.exit(app.exec())
Последнее редактирование: