11#built-in
22from ctypes import windll
3- from urllib .request import urlopen
4- from urllib .parse import quote
53from collections import namedtuple
64from gc import collect as del_mem
75from time import sleep
86
97#ext
108from pyMeow import open_process , get_module
11- from pyMeow import r_int , r_float
12- from orjson import loads
13- from win32api import GetSystemMetrics , GetAsyncKeyState
9+ from pyMeow import r_int , r_float , r_uint64
10+ from win32api import GetSystemMetrics , GetCursorPos
1411
1512
1613#own
1714from data import Offsets , Info , VK_CODES
1815from world_to_screen import World
1916from utils import send_key , debug_info
17+ from entities import AttributesReader
2018
2119"""
2220TODO:
@@ -28,30 +26,15 @@ class Asmite:
2826
2927 def __init__ (self , settings ):
3028 self .settings = settings
31- self .raw_names = Info .asmite_raw_names
32- self .url_active_player_name = Info .url_activeplayer_name
33- self .url_request = Info .asmite_url_request
3429
3530 self .obj_health = Offsets .obj_health
3631 self .obj_spawn_count = Offsets .obj_spawn_count
3732 self .obj_x = Offsets .obj_x
3833 self .obj_y = Offsets .obj_y
3934 self .obj_z = Offsets .obj_z
40-
41- def get_username (self ):
42- return loads (urlopen (self .url_active_player_name ).read ())
4335
4436 def get_settings (self ):
45- return VK_CODES [self .settings ['smite' ]], VK_CODES [self .settings ['update' ]]
46-
47- def get_damage (self , username ):
48- spells = loads (urlopen (self .url_request .format (username = username )).read ())
49- sp1 , sp2 = spells ["summonerSpellOne" ], spells ["summonerSpellTwo" ]
50- for v , v2 in zip (sp1 .values (), sp2 .values ()):
51- if v in self .raw_names :
52- return self .raw_names [v ]
53- if v2 in self .raw_names :
54- return self .raw_names [v2 ]
37+ return VK_CODES [self .settings ['smite' ]]
5538
5639 def _read_attr (self , process , address , nt ):
5740 attributes = nt (
@@ -65,22 +48,20 @@ def _read_attr(self, process, address, nt):
6548 return attributes
6649
6750def autosmite (terminate , settings , jungle_pointers , on_window ):
68- import ssl
69- import requests
70-
71- requests .packages .urllib3 .disable_warnings ()
72- ssl ._create_default_https_context = ssl ._create_unverified_context
73-
7451 while not terminate .value :
7552 if on_window .value :
7653 del_mem ()
7754 try :
7855 process = open_process (process = Info .game_name_executable )
7956 base_address = get_module (process , Info .game_name_executable )['base' ]
57+ local_player = r_uint64 (process , base_address + Offsets .local_player )
58+ attr_reader = AttributesReader (process , base_address )
8059 asmite = Asmite (settings )
81- username = quote (asmite .get_username ())
82- smite_key , update_key = asmite .get_settings ()
83- damage = asmite .get_damage (username )
60+ smite_key = asmite .get_settings ()
61+
62+ damage = 0
63+ smite_charges = 0
64+
8465 width , height = GetSystemMetrics (0 ), GetSystemMetrics (1 )
8566 world = World (process , base_address , width , height )
8667 set_cursor_pos = windll .user32 .SetCursorPos
@@ -92,20 +73,34 @@ def autosmite(terminate, settings, jungle_pointers, on_window):
9273
9374 else :
9475 try :
95- while 1 :
76+ while 1 and on_window .value :
77+ player = attr_reader .read_player (local_player )
78+
79+ for buff in player .buffs :
80+ if 'smitedamagetracker' in str (buff .name ).lower ():
81+ damage = buff .count2
82+
9683 entities = [asmite ._read_attr (process , pointer , nt ) for pointer in jungle_pointers ]
9784 target = [entity for entity in entities if entity .health <= damage and entity .alive ]
98-
99- if target :
85+
86+ spells = attr_reader .read_spells (local_player )
87+ if 'smite' in spells [4 ]['name' ].lower ():
88+ smite_charges = spells [4 ]['charges' ]
89+ elif 'smite' in spells [5 ]['name' ].lower ():
90+ smite_charges = spells [5 ]['charges' ]
91+
92+ if target and smite_charges > 0 :
10093 pos = world .world_to_screen (world .get_view_proj_matrix (), target [0 ].x , target [0 ].z , target [0 ].y )
94+ mouse_pos = GetCursorPos ()
10195 if pos :
10296 set_cursor_pos (pos [0 ], pos [1 ])
10397 send_key (smite_key )
104- sleep (0.03 )
98+ sleep (0.01 )
99+ set_cursor_pos (mouse_pos [0 ], mouse_pos [1 ])
105100
106- elif GetAsyncKeyState (update_key ):
107- damage = asmite .get_damage (username )
101+ sleep (0.03 )
108102 except Exception as asmite_loop :
109103 debug_info (asmite_loop , True )
110104 sleep (0.1 )
111105
106+
0 commit comments