Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __author__ = 'JoshMain'
- import psutil
- from ctypes import *
- def _get_pid():
- pid = -1
- for p in psutil.process_iter():
- if p.name == 'pol.exe':
- return p.pid
- return pid
- class c_PlayerStats(Structure):
- _fields_ = [("Str", c_short),
- ("Dex", c_short),
- ("Vit", c_short),
- ("Agi", c_short),
- ("Int", c_short),
- ("Mnd", c_short),
- ("Chr", c_short)]
- class c_PlayerElements(Structure):
- _fields_ = [("Fire", c_short),
- ("Ice", c_short),
- ("Wind", c_short),
- ("Earth", c_short),
- ("Lightning", c_short),
- ("Water", c_short),
- ("Light", c_short),
- ("Dark", c_short)]
- class c_PlayerCombatSkills(Structure):
- _fields_ = [("HandToHand", c_ushort),
- ("Dagger", c_ushort),
- ("Sword", c_ushort),
- ("GreatSword", c_ushort),
- ("Axe", c_ushort),
- ("GreatAxe", c_ushort),
- ("Scythe", c_ushort),
- ("Polearm", c_ushort),
- ("Katana", c_ushort),
- ("GreatKatana", c_ushort),
- ("Club", c_ushort),
- ("Staff", c_ushort),
- ("unkweap0", c_ushort),
- ("unkweap1", c_ushort),
- ("unkweap2", c_ushort),
- ("unkweap3", c_ushort),
- ("unkweap4", c_ushort),
- ("unkweap5", c_ushort),
- ("unkweap6", c_ushort),
- ("unkweap7", c_ushort),
- ("unkweap8", c_ushort),
- ("unkweap9", c_ushort),
- ("unkweap10", c_ushort),
- ("unkweap11", c_ushort),
- ("Archery", c_ushort),
- ("Marksmanship", c_ushort),
- ("Throwing", c_ushort),
- ("Guarding", c_ushort),
- ("Evasion", c_ushort),
- ("Shield", c_ushort),
- ("Parrying", c_ushort)]
- class c_PlayerMagicSkills(Structure):
- _fields_ = [("Divine", c_ushort),
- ("Healing", c_ushort),
- ("Enhancing", c_ushort),
- ("Enfeebling", c_ushort),
- ("Elemental", c_ushort),
- ("Dark", c_ushort),
- ("Summon", c_ushort),
- ("Ninjitsu", c_ushort),
- ("Singing", c_ushort),
- ("String", c_ushort),
- ("Wind", c_ushort),
- ("BlueMagic", c_ushort),
- ("unkmagic0", c_ushort),
- ("unkmagic1", c_ushort),
- ("unkmagic2", c_ushort),
- ("unkmagic3", c_ushort)]
- class c_PlayerCraftLevels(Structure):
- _fields_ = [("Fishing", c_ushort),
- ("Woodworking", c_ushort),
- ("Smithing", c_ushort),
- ("Goldsmithing", c_ushort),
- ("Clothcraft", c_ushort),
- ("Leathercraft", c_ushort),
- ("Bonecraft", c_ushort),
- ("Alchemy", c_ushort),
- ("Cooking", c_ushort)]
- class c_PlayerInfo(Structure):
- _fields_ = [("HPMax", c_int),
- ("MPMax", c_int),
- ("MainJob", c_char),
- ("MainJobLVL", c_char),
- ("SubJob", c_char),
- ("SubJobLVL", c_char),
- ("EXPIntoLVL", c_ushort),
- ("EXPForLVL", c_ushort),
- ("Stats", c_PlayerStats),
- ("StatModifiers", c_PlayerStats),
- ("Attack", c_short),
- ("Defense", c_short),
- ("Elements", c_PlayerElements),
- ("Title", c_short),
- ("Rank", c_short),
- ("RankPts", c_short),
- ("Nation", c_byte),
- ("Residence", c_byte),
- ("HomePoint", c_int),
- ("CombatSkills", c_PlayerCombatSkills),
- ("MagicSkills", c_PlayerMagicSkills),
- ("CraftLevels", c_PlayerCraftLevels),
- ("null0", c_char),
- ("LimitPoints", c_ushort),
- ("MeritPoints", c_ubyte),
- ("LimitMode", c_ubyte),
- ("null1", c_char),
- ("Buffs", c_ushort)]
- class KeyboardHelper(object):
- def __init__(self, windower):
- self.windower = windower
- self.helper = windower._dll.CreateKeyboardHelper(c_char_p('WindowerMMFKeyboardHandler_' + str(_get_pid())))
- def send(self, string):
- self.windower._dll.CKHSendString(self.helper, c_char_p(string))
- def keydown(self, key):
- self.windower._dll.CKHSetKey(self.helper, c_char(key), c_bool(True))
- def keyup(self, key):
- self.windower._dll.CKHSetKey(self.helper, c_char(key), c_bool(False))
- def block(self):
- self.windower._dll.CKHBlockInput(self.helper, c_bool(True))
- def unblock(self):
- self.windower._dll.CKHBlockInput(self.helper, c_bool(False))
- def delete(self):
- self.windower._dll.DeleteKeyboardHelper(self.helper)
- class WindowerHelper(object):
- def __init__(self):
- self._dll = windll.LoadLibrary('WindowerHelper.dll')
- def create_keyboard_helper(self):
- return KeyboardHelper(self)
- def create_console_helper(self):
- return ConsoleHelper(self)
- class FFACE(object):
- def __init__(self):
- self._dll = cdll.LoadLibrary('FFACE.dll')
- self.instance = self._dll.CreateInstance(_get_pid())
- @property
- def access(self):
- return self._dll.Access(self.instance)
- def get_max_inventory(self):
- return self._dll.GetInventoryMax(self.instance)
- def get_max_satchel(self):
- return self._dll.GetSatchelMax(self.instance)
- def get_inventory_item(self, index):
- class c_Items(Structure):
- _fields_ = [("ID", c_ushort),
- ("Index", c_ubyte),
- ("Count", c_uint),
- ("Flag", c_uint),
- ("Price", c_uint),
- ("Extra", c_ushort)]
- self._dll.GetInventoryItem.restype = c_Items
- return self._dll.GetInventoryItem(self.instance, index)
- def get_player_info(self):
- s = c_PlayerInfo()
- self._dll.GetPlayerInfo(self.instance, byref(s))
- return s
- del s
- def get_chat_line_count(self):
- return self._dll.GetChatLineCount(self.instance)
- def is_menu_open(self):
- return self._dll.MenuIsOpen(self.instance)
- def get_vana_utc(self):
- return self._dll.GetVanaUTC(self.instance)
- if __name__ == '__main__':
- fface = FFACE()
- playerinfo = fface.get_player_info()
- print playerinfo.EXPIntoLVL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement