def handleReady(self): false_list = ['ready_for_cube','face_done','eye_done','earring_done','ring_done','necklace_done','cubing_done','storing_meso','pet_expire','training_done','monster_park_done'] zero_list = ['storage_number','used_slots','total_slots','necklace','eye','face','earring','ring'] for entry in false_list: if entry not in self.accountData: self.accountData[entry] = False for entry in zero_list: if entry not in self.accountData: self.accountData[entry] = 0 if 'kanna_pos' not in self.accountData: if Character.GetJob() == 4212: self.accountData['kanna_pos'] = Terminal.GetLineEdit("LoginChar") if 'IGN' not in self.accountData or self.accountData['IGN'] == '': self.accountData['IGN'] = Character.GetName() if 'total_meso' not in self.accountData: if Character.GetJob() == 4212: self.accountData['total_meso'] = int(self.accountData['storage_number']) * 30 + Character.GetMeso() / 1000000000 if 'date' not in self.accountData: self.accountData['date'] = str(datetime.datetime.utcnow().date()) if 'equips' not in self.accountData: self.accountData['equips'] = [] if 'zakum_daily_done' not in self.accountData: self.accountData['zakum_daily_done'] = set() if 'horntail_daily_done' not in self.accountData: self.accountData['horntail_daily_done'] = set()
def doJobAdv(self): level = Character.GetLevel() job = Character.GetJob() first_job = (job == JOB_CONSTANTS.KannaJobs[0] and level < 13) second_job = (job == JOB_CONSTANTS.KannaJobs[0] and level >= 30) third_job = False #Automatic fourth_job = False #Automatic return first_job or second_job or third_job or fourth_job
def FindHighestStat(): demonA = [3122, 3121, 3120] if Character.GetJob() in demonA: return "HP" else: stats = { "STR": Character.GetStr(), "DEX": Character.GetDex(), "INT": Character.GetInt(), "LUK": Character.GetLuk() } return sorted(stats, key=stats.get, reverse=True)[0]
def setAttack(bool): if Character.GetJob() == 4212: # kanna settings Terminal.SetCheckBox("MonkeySpiritsNDcheck", bool) Terminal.SetCheckBox("bot/kanna_kami", bool) Terminal.SetCheckBox("Summon Kishin", bool) Terminal.SetCheckBox("bot/kishin_fma", bool) Terminal.SetCheckBox("Grenade Kami", bool) else: if kami == 1 and Terminal.GetCheckBox("Kami Vac") != bool: Terminal.SetCheckBox("Kami Vac", bool) if auto == 1 and Terminal.GetCheckBox("Auto Attack") != bool: Terminal.SetCheckBox("Auto Attack", bool) elif auto == 0 and Terminal.GetCheckBox("Skill Injection") != bool: Terminal.SetCheckBox("Skill Injection", bool)
import os, sys, Terminal, Character, time, GameState, Npc, Field, Quest, Party if not any("SunCat" in s for s in sys.path): sys.path.append(os.getcwd() + "\SunCat") try: import SunCat, SCHotkey, SCLib except: print("Couldn't find SunCat module") from AioAttackSettings import * job = Character.GetJob() #SCLib.PersistVar("KillHorntail", DoHorntail) TheCaveOfTrialEasy1 = 240060002 TheCaveOfTrialEasy2 = 240060102 TheCaveOfTrialNormal1 = [240060005, 240060000] TheCaveOfTrialNormal2 = [240060105, 240060100] HorntailsCaveNormal = [240060200, 240060205] HorntailsCaveEasy = 240060300 ChaosHorntailsCave = [x for x in range(240060201, 240060230)] TheCaveOfTrialChaos1 = [x for x in range(240060001, 240060030)] TheCaveOfTrialChaos2 = [x for x in range(240060101, 240060130)] CaveOfLifeEntrance = 240050000 EntranceToHorntailsCave = 240050400 CaveOfLifeEntrance1 = 240040700 PeakOfTheBigNest = 240040600 HorntailsLeftHeadEasy = 8810200
import Field import Inventory import Key import Npc import Packet import Quest import Terminal import time import Packet import GameState, Party Terminal.SetRushByLevel(False) if GameState.IsInGame(): time.sleep(1) jobid = Character.GetJob() level = Character.GetLevel() if Terminal.IsRushing(): time.sleep(1) fieldid = Field.GetID() quest1 = Quest.GetQuestState(1466) quest2 = Quest.GetQuestState(34100) quest3 = Quest.GetQuestState(34101) quest4 = Quest.GetQuestState(34102) quest5 = Quest.GetQuestState(34103) quest6 = Quest.GetQuestState(34104) quest7 = Quest.GetQuestState(34105) quest8 = Quest.GetQuestState(34106) quest9 = Quest.GetQuestState(34107)
def StoreMeso(self): storage_map_id = 550000000 storage_npc_id = 9270054 ###########store mesos def store_mesos(): while True: if Field.GetID() == storage_map_id: print("Current Mesos before store = {}".format(Character.GetMeso())) Packet.BlockRecvHeader(PACKET_HEADERS.block_header) Character.Teleport(2268,17) time.sleep(1) Character.TalkToNpc(storage_npc_id) time.sleep(1) oPacket = Packet.COutPacket(PACKET_HEADERS.store_header) oPacket.EncodeBuffer("07 FFFFFFF903DC5401") Packet.SendPacket(oPacket) oPacket1 = Packet.COutPacket(PACKET_HEADERS.store_header) oPacket1.Encode2(8) Packet.SendPacket(oPacket1) print("Completed meso storing") time.sleep(1) print("Current Mesos after store = {}".format(Character.GetMeso())) Packet.UnBlockRecvHeader(PACKET_HEADERS.block_header) break else: Terminal.Rush(storage_map_id) print("Still rushing to storage") time.sleep(2) def withdraw_mesos(): if Field.GetID() ==101000000: #wait till character gets to ellinia #1032006 time.sleep(2) Packet.BlockRecvHeader(PACKET_HEADERS.block_header) print("Current Mesos before withdraw = {}".format(Character.GetMeso())) Character.TalkToNpc(1032006) time.sleep(3) oPacket = Packet.COutPacket(PACKET_HEADERS.store_header) oPacket.EncodeBuffer("07 00000006FC23ABFF") Packet.SendPacket(oPacket) oPacket1 = Packet.COutPacket(PACKET_HEADERS.store_header) oPacket1.Encode2(8) #oPacket2.EncodeBuffer("08") Packet.SendPacket(oPacket1) time.sleep(1) print("Current Mesos after withdraw = {}".format(Character.GetMeso())) time.sleep(1) Packet.UnBlockRecvHeader(PACKET_HEADERS.block_header) else: Terminal.Rush(101000000) time.sleep(3) if Character.GetMeso() == 29999999999 and Character.GetJob() == 4212: #if mesos =29999999999, which is max, store them in the storage HELPER.ToggleRushByLevel(False) #Terminal.LoadProfile(r"C:\Users\Jacopo\Desktop\TerminalManager\terminalProfiles\StoreMesos.xml") if self.accountData['storing_meso'] == False: store_mesos() #Next step is to change the AutoChar Number and then logon into the new created luminous and release control #Read AutoChar Number, +1 write to file. time.sleep(3) if Character.GetMeso() == 0: self.accountData['storing_meso'] = True self.writeJson() print("logging out") if GameState.IsInGame(): Terminal.Logout() time.sleep(3) #print(GameState.GetLoginStep()) if self.accountData['storing_meso'] and GameState.GetLoginStep() == 2: autochar_kanna = 19 autochar_lumi = 11 Terminal.SetCheckBox("Auto Login",False) Terminal.SetLineEdit("LoginChar", str(accountData['storage_number'] + 1)) Terminal.SetComboBox("settings/autochar_job",autochar_lumi) Terminal.SetCheckBox("Auto Login",True) Terminal.SetCheckBox("settings/autochar",True) if self.accountData['storing_meso'] and Character.GetJob() == 2700 and Character.GetMeso() == 0: print("withdrawing mesos") HELPER.ToggleRushByLevel(False) withdraw_mesos() time.sleep(2) SCLib.UpdateVar("withdraw_flag",True) elif self.accountData['storing_meso'] and Character.GetJob() == 2700 and Character.GetMeso() == 29999999999 and SCLib.GetVar("withdraw_flag"): #safe to say that storage is empty and can switch back to kanna self.accountData['storage_number'] = self.accountData['storage_number'] + 1 self.accountData['storing_meso'] = False self.writeJson() if GameState.IsInGame(): Terminal.Logout() Terminal.SetLineEdit("LoginChar", self.accountData['kanna_pos']) SCLib.UpdateVar("withdraw_flag",False) print("Logging out and changing to Kanna farmer") time.sleep(2) elif self.accountData['storing_meso'] and Character.GetJob() == 2700 and Character.GetMeso() != 0 and not SCLib.GetVar("withdraw_flag"): #need to update bank number but did not withdraw mesos self.accountData['storage_number'] = self.accountData['storage_number'] + 1 self.writeJson() if GameState.IsInGame(): Terminal.Logout() print("Logging out and changing to next bank") time.sleep(2) def ChooseLightPath(): choosePacket = Packet.COutPacket(PACKET_HEADERS.dialogue_header) choosePacket.EncodeBuffer("1A 01 00000000") Packet.SendPacket(choosePacket) if Field.GetID() == 927020000: ChooseLightPath() time.sleep(1)
def doBuyExpansion(self): return self.accountData['pet_expire'] and self.accountData['cubing_done'] and Character.GetJob() in JOB_CONSTANTS.KannaJobs
def doStoreMeso(self): return self.accountData['storing_meso'] or (Character.GetMeso() == 29999999999 and Character.GetJob() == JOB_CONSTANTS.KannaJobs[3])
def Job1(): def to_portal(pname, enter=True): map = Field.GetID() portal = Field.FindPortal(pname) if portal.valid: if not ((portal.x-10 < Character.GetPos().x < portal.x+10)\ and (portal.y-10 < Character.GetPos().y < portal.y+15)): Character.Teleport(portal.x, portal.y-20) time.sleep(1) attempt = 0 while enter and Field.GetID() == map and attempt < 3: attempt += 1 Character.EnterPortal() time.sleep(1) def startQuest(quest, npc): print("Starting quest {0} from npc {1}".format(quest, npc)) Quest.StartQuest(quest, npc) time.sleep(1) def completeQuest(quest, npc): print("Completing quest {0} from npc {1}".format(quest, npc)) Quest.StartQuest(quest, npc) time.sleep(1) def questDone(quest, npc): return Quest.CheckCompleteDemand(quest, npc) == 0 def needQuest(id): # quest hasn't been accepted return Quest.GetQuestState(id) == 0 def hasQuest(id): # quest is active return Quest.GetQuestState(id) == 1 def doQuest(id): # quest isn't complete/turned in return Quest.GetQuestState(id) != 2 def doneQuest(id): # quest isn't complete/turned in return Quest.GetQuestState(id) == 2 map = Field.GetID() if Character.GetJob() != 301 and Character.GetLevel() <= 29: if map == 910090301: Terminal.SetCheckBox("RushByLevel", False) Terminal.SetCheckBox("Auto Pet", True) Inventory.UseItem(2434265) to_portal("east00") elif doQuest(35900): if needQuest(35900): time.sleep(1) startQuest(35900, 0) time.sleep(1) elif hasQuest(35900): time.sleep(1) completeQuest(35900, 1013305) time.sleep(1) elif doneQuest(35900) and doQuest(35901): if needQuest(35901): time.sleep(1) startQuest(35901, 1013305) time.sleep(1) elif hasQuest(35901): time.sleep(5) completeQuest(35901, 1013305) time.sleep(5) elif doneQuest(35901) and doQuest(35902): if needQuest(35902): time.sleep(1) startQuest(35902, 1013305) time.sleep(1) if hasQuest(35902): if not questDone(35902, 1013305): if map == 910090302: to_portal("east00") if map == 910090303: Terminal.SetCheckBox("Legit Vac", False) Terminal.SetCheckBox("Mob Falldown", True) Terminal.SetCheckBox("Auto Aggro", False) Terminal.SetCheckBox("Melee No Delay", False) Terminal.SetCheckBox("Skill Inection", False) Terminal.SetCheckBox("General FMA", False) Terminal.SetCheckBox("Auto Attack", True) Terminal.SetPushButton("Item Filter", False) if questDone(35902, 1013305): Terminal.SetCheckBox("Auto Aggro", False) Terminal.SetCheckBox("Melee No Delay", False) Terminal.SetCheckBox("Auto Attack", False) if map == 910090303: to_portal("west00") if map == 910090302: Npc.ClearSelection() Npc.RegisterSelection("Fire") completeQuest(35902, 1013305) elif doneQuest(35902) and not doneQuest(35903): if needQuest(35903): time.sleep(1) startQuest(35903, 9010000) else: if map == 910090305 and Character.GetLevel() <= 15: Terminal.SetCheckBox("RushByLevel", True) to_portal("out00")
def Job4(): if Character.GetJob() == 331 and Character.GetLevel() >= 100: startQuest(35932, 0) startQuest(35936, 9010000)
def Job3(): if Character.GetJob() == 330 and Character.GetLevel() >= 60: startQuest(35931, 0) startQuest(35935, 9010000)
def Job2(): if Character.GetJob() == 301 and Character.GetLevel() >= 30: startQuest(35939, 0) startQuest(35934, 9010000)
def update(self): if GameState.IsInGame(): self.name = Character.GetName() self.job = Character.GetJob() self.level = Character.GetLevel()