示例#1
0
 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()
示例#2
0
    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
示例#3
0
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]
示例#4
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)
示例#7
0
    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)
示例#8
0
 def doBuyExpansion(self):
     return self.accountData['pet_expire'] and self.accountData['cubing_done'] and Character.GetJob() in JOB_CONSTANTS.KannaJobs
示例#9
0
 def doStoreMeso(self):
     return self.accountData['storing_meso'] or (Character.GetMeso() == 29999999999 and Character.GetJob() == JOB_CONSTANTS.KannaJobs[3])
示例#10
0
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")
示例#11
0
def Job4():

    if Character.GetJob() == 331 and Character.GetLevel() >= 100:
        startQuest(35932, 0)
        startQuest(35936, 9010000)
示例#12
0
def Job3():

    if Character.GetJob() == 330 and Character.GetLevel() >= 60:
        startQuest(35931, 0)
        startQuest(35935, 9010000)
示例#13
0
def Job2():

    if Character.GetJob() == 301 and Character.GetLevel() >= 30:
        startQuest(35939, 0)
        startQuest(35934, 9010000)
示例#14
0
 def update(self):
     if GameState.IsInGame():
         self.name = Character.GetName()
         self.job = Character.GetJob()
         self.level = Character.GetLevel()