public byte GetCharacterEquipment(CharNames charName, Func <CharMemLoc, IntPtr> addressSelector) { CharMemLoc charMemLoc = CharMemLoc.ByName(charName); var bytes = new byte[1]; _memoryAccessor.ReadMem(Settings.ProcessName, addressSelector(charMemLoc), bytes); return(bytes[0]); }
public void SetCharacterEquipment(CharNames charName, byte equipmentEquipmentId, Func <CharMemLoc, IntPtr> addressSelector) { CharMemLoc charMemLoc = CharMemLoc.ByName(charName); var bytes = new[] { equipmentEquipmentId }; _memoryAccessor.WriteMem(Settings.ProcessName, addressSelector(charMemLoc), bytes); }
public string GetCharacterName(CharNames charName) { CharMemLoc cml = CharMemLoc.ByName(charName); byte[] bytes = new byte[cml.Name.NumBytes]; _memoryAccessor.ReadMem(ProcessName, cml.Name.Address, bytes); string characterName = bytes.MapFf7BytesToString(); return(characterName); }
public void SetCharacterName(CharNames charName, string newName) { CharMemLoc cml = CharMemLoc.ByName(charName); byte[] bytes = newName.MapStringToFf7Bytes(); if (_momentAccessor.AtMomentOrLater(charName.AllowNamingAfter)) { _memoryAccessor.WriteMem(ProcessName, cml.Name.Address, bytes); } _memoryAccessor.WriteMem(ProcessName, cml.StartingName.Address, bytes); }
public void RemoveArmletMateria(CharNames charNames, int keep = 0) { CharMemLoc charMemLoc = CharMemLoc.ByName(charNames); byte[] emptyRow = { byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue }; for (int i = ItemSize * keep; i < charMemLoc.ArmorMateria.NumBytes; i += ItemSize) { IntPtr address = IntPtr.Add(charMemLoc.ArmorMateria.Address, i); var bytes = new byte[ItemSize]; _memory.ReadMem(Settings.ProcessName, address, bytes); var materia = new MateriaSlot(bytes); AddMateria(materia.MateriaId, materia.Experience); _memory.WriteMem(Settings.ProcessName, address, emptyRow); } }
private static CharacterRecord CreateCharacterRecord(byte charId, byte[] map) { var charName = CharNames.GetById(charId); var offset = charName.SaveMapRecordOffset; if (offset == -1) { // Invalid or empty record return(new CharacterRecord { Id = FF7Const.Empty });; } var record = new Span <byte>(map, offset, 0x80).ToArray().ToType <CharacterRecord>(); return(record); }
private void Evolve() { Sequences selection = currentSequences[UnityEngine.Random.Range(0, 7)]; CharNames nextChar = CharNames.N; switch (selection) { case Sequences.Offensive: nextChar = CharNames.O; break; case Sequences.Defensive: nextChar = CharNames.D; break; case Sequences.Technical: nextChar = CharNames.T; break; } GetComponent <PlayerStats>().EvolveUpdate(Characters.CharacterStatsDictionary[nextChar]); }
public abstract bool IsMatchByEquipId(ushort equipId, CharNames charName = null);
public abstract bool IsMatchByItemId(ushort itemId, CharNames charName = null);
// Update is called once per frame void Update() { if (startedGame) { return; } if (Input.GetButtonUp("Player_One_Pause") || Input.GetButtonUp("Player_Two_Pause")) { if (Player1Chosen && Player2Chosen) { StartGameButton.GetComponent <MenuButtons>().PressButton(); return; } } if (ReturnButton.GetComponent <MouseHover>().GetSelected() && !StartGameButton.activeInHierarchy) { ReturnButton.GetComponent <MouseHover>().SetSelected(false); ReturnButton.GetComponent <TextMesh>().color = Color.white; } if (Input.GetAxis("Player_One_Joystick_Vertical") > 0 || Input.GetButtonUp("Player_One_Menu_Down")) { if (!Player1Chosen) { onReturn = true; ReturnButton.GetComponent <TextMesh>().color = Color.white; Player1Icon.SetActive(false); } } else if (Input.GetAxis("Player_One_Joystick_Vertical") < 0 || Input.GetButtonUp("Player_One_Menu_Up")) { if (onReturn) { onReturn = false; ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0); Player1Icon.SetActive(true); } } if (Input.GetButtonUp("Player_One_Paddle_Forward")) { if (!onReturn) { if (Player1Chosen == false) { if (!Player2Chosen || Player1Pos != Player2Pos) { CharNames name = (CharNames)Player1Pos; PlayerData.player1Character = name.ToString(); Player1Chosen = true; Player1Icon.SetActive(false); Player1Text.SetActive(true); if (Player1Pos == 0) { audioP1.pitch = rogerPitch; } else { audioP1.pitch = jollyPitch; } audioP1.PlayOneShot(onCharacterClip[Player1Pos]); if (Player1Chosen && Player2Chosen) { StartGameButton.SetActive(true); ReturnButton.GetComponent <TextMesh>().color = new Color(0.85f, 0.65f, 0); } } } } else { ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0); ReturnButton.GetComponent <MenuButtons>().PressButton(); } } else if (Input.GetButtonUp("Player_One_Paddle_Back")) { if (Player1Chosen == true) { StartGameButton.SetActive(false); Player1Chosen = false; Player1Icon.SetActive(true); Player1Text.SetActive(false); } else { ReturnButton.GetComponent <TextMesh>().color = new Color(1, 0.75f, 0); ReturnButton.GetComponent <MenuButtons>().PressButton(); } } else if (!Player1Chosen && !onReturn) { if (Input.GetButtonDown("Player_One_Paddle_Right") || Input.GetAxis("Player_One_Joystick_Horizontal") > 0) { if (Player1Pos + 1 < AmountOfChars) { Player1Icon.transform.localPosition += portraitDistance; Player1Text.transform.localPosition += portraitDistance; Player1Pos++; audioP1.pitch = 1; audioP1.PlayOneShot(changingCharacterClip); } } else if (Input.GetButtonDown("Player_One_Paddle_Left") || Input.GetAxis("Player_One_Joystick_Horizontal") < 0) { if (Player1Pos > 0) { Player1Icon.transform.localPosition -= portraitDistance; Player1Text.transform.localPosition -= portraitDistance; Player1Pos--; audioP1.pitch = 1; audioP1.PlayOneShot(changingCharacterClip); } } } if (Input.GetButtonDown("Player_Two_Paddle_Forward")) { if (!Player2Chosen) { if (!Player1Chosen || Player1Pos != Player2Pos) { CharNames name = (CharNames)Player2Pos; PlayerData.player2Character = name.ToString(); Player2Chosen = true; Player2Icon.SetActive(false); Player2Text.SetActive(true); if (Player2Pos == 0) { audioP2.pitch = rogerPitch; } else { audioP2.pitch = jollyPitch; } audioP2.PlayOneShot(onCharacterClip[Player2Pos]); if (Player1Chosen && Player2Chosen) { StartGameButton.SetActive(true); ReturnButton.GetComponent <TextMesh>().color = new Color(0.85f, 0.65f, 0); } } } } else if (Input.GetButtonDown("Player_Two_Paddle_Back")) { StartGameButton.SetActive(false); Player2Chosen = false; Player2Icon.SetActive(true); Player2Text.SetActive(false); } else if (!Player2Chosen) { if (Input.GetButtonDown("Player_Two_Paddle_Right") || Input.GetAxis("Player_Two_Joystick_Horizontal") > 0) { if (Player2Pos + 1 < AmountOfChars) { Player2Icon.transform.localPosition += portraitDistance; Player2Text.transform.localPosition += portraitDistance; Player2Pos++; audioP2.pitch = 1; audioP2.PlayOneShot(changingCharacterClip); } } else if (Input.GetButtonDown("Player_Two_Paddle_Left") || Input.GetAxis("Player_Two_Joystick_Horizontal") < 0) { if (Player2Pos > 0) { Player2Icon.transform.localPosition -= portraitDistance; Player2Text.transform.localPosition -= portraitDistance; Player2Pos--; audioP2.pitch = 1; audioP2.PlayOneShot(changingCharacterClip); } } } }
public static EquippableSettings FindByValue(this List <EquippableSettings> list, string value, CharNames charName) { IEnumerable <EquippableSettings> enabled = list.Where(x => x.Enabled); if (ushort.TryParse(value, out ushort id)) { return(enabled.FirstOrDefault(x => x.Item.IsMatchByEquipId(id, charName))); } return(enabled.FirstOrDefault(x => x.Words.Any(w => w.EqualsIns(value)))); }
public override bool IsMatchByEquipId(ushort equipId, CharNames charName = null) => EquipmentId == equipId && CharName == charName;
public abstract bool IsMatchByName(string name, CharNames charName);
public static List <EquippableSettings> AllByName(this List <EquippableSettings> list, string name, CharNames charName) { IEnumerable <EquippableSettings> enabled = list.Where(x => x.Enabled); if (string.IsNullOrWhiteSpace(name)) { return(enabled.Where(x => x.Item.IsMatchByCharacter(charName)).ToList()); } return(enabled.Where(x => x.Item.IsMatchByName(name, charName)).ToList()); }
public override bool IsMatchByCharacter(CharNames charName) => true;
protected Weapon(ushort id, string name, ushort defaultPrice, ushort typeOffset, CharNames charName, byte weaponOffset, bool enabled, params string[] words) : base(id, name, defaultPrice, enabled, typeOffset, weaponOffset, words) { CharName = charName; }
private static bool FillChar(byte charId, ref CharacterRecord characterRecord, byte[] map) { CharNames charName = CharNames.GetById(charId); var offset = charName.SaveMapRecordOffset; if (offset == -1) { // Invalid or empty record return(false); } characterRecord.DefaultName = charName; var characterNameBytes = new byte[12]; Array.Copy(map, offset + SaveMapCharacterOffsets.Name, characterNameBytes, 0, 12); characterRecord.Name = characterNameBytes.ToFFString(); characterRecord.Id = charId; characterRecord.Level = map[offset + SaveMapCharacterOffsets.Level]; characterRecord.Strength = map[offset + SaveMapCharacterOffsets.Strength]; characterRecord.Vitality = map[offset + SaveMapCharacterOffsets.Vitality]; characterRecord.Magic = map[offset + SaveMapCharacterOffsets.Magic]; characterRecord.Spirit = map[offset + SaveMapCharacterOffsets.Spirit]; characterRecord.Dexterity = map[offset + SaveMapCharacterOffsets.Dexterity]; characterRecord.Luck = map[offset + SaveMapCharacterOffsets.Luck]; characterRecord.StrBonus = map[offset + SaveMapCharacterOffsets.StrengthBonus]; characterRecord.VitBonus = map[offset + SaveMapCharacterOffsets.VitalityBonus]; characterRecord.MagBonus = map[offset + SaveMapCharacterOffsets.MagicBonus]; characterRecord.SprBonus = map[offset + SaveMapCharacterOffsets.SpiritBonus]; characterRecord.DexBonus = map[offset + SaveMapCharacterOffsets.DexterityBonus]; characterRecord.LucBonus = map[offset + SaveMapCharacterOffsets.LuckBonus]; characterRecord.LimitLevel = map[offset + SaveMapCharacterOffsets.LimitLevel]; characterRecord.LimitBar = map[offset + 0x0F]; characterRecord.Weapon = map[offset + SaveMapCharacterOffsets.EquipedWeapon]; characterRecord.Armor = map[offset + SaveMapCharacterOffsets.EquipedArmor]; characterRecord.Accessory = map[offset + SaveMapCharacterOffsets.EquipedAccessory]; characterRecord.Flags = map[offset + SaveMapCharacterOffsets.StatusFlags]; characterRecord.AtFront = map[offset + SaveMapCharacterOffsets.Row] == FF7Const.Empty; characterRecord.LevelProgress = map[offset + 0x21]; characterRecord.LimitMask = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitBreaks); characterRecord.Kills = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.NumberOfKills); characterRecord.LimitTimes = new short[3]; characterRecord.LimitTimes[0] = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel1Uses); characterRecord.LimitTimes[1] = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel2Uses); characterRecord.LimitTimes[2] = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.LimitLevel3Uses); characterRecord.CurrentHp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.CurrentHp); characterRecord.BaseHp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.BaseHp); characterRecord.MaxHp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.MaxHp); characterRecord.CurrentMp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.CurrentMp); characterRecord.BaseMp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.BaseMp); characterRecord.MaxMp = BitConverter.ToInt16(map, offset + SaveMapCharacterOffsets.MaxMp); characterRecord.Experience = BitConverter.ToInt32(map, offset + SaveMapCharacterOffsets.CurrentExp); characterRecord.WeaponMateria = new int[8]; for (var materiaSlot = 0; materiaSlot <= 7; materiaSlot++) { characterRecord.WeaponMateria[materiaSlot] = map[offset + SaveMapCharacterOffsets.WeaponMateria1 + (4 * materiaSlot)]; } characterRecord.ArmorMateria = new int[8]; for (var materiaSlot = 0; materiaSlot <= 7; materiaSlot++) { characterRecord.ArmorMateria[materiaSlot] = map[offset + SaveMapCharacterOffsets.ArmorMateria1 + (4 * materiaSlot)]; } characterRecord.ExpToLevel = BitConverter.ToInt32(map, offset + SaveMapCharacterOffsets.ExpToNextLevel); return(true); }
public T GetByEquipId(ushort equipId, CharNames charName = null) => All.SingleOrDefault(x => x.IsMatchByEquipId(equipId, charName));
public T GetByItemId(ushort itemId, CharNames charName = null) => All.SingleOrDefault(x => x.IsMatchByItemId(itemId, charName));
public NameVoteReceived(CharNames charName, string bidName, BidRecord bidRecord) { CharName = charName; BidName = bidName; BidRecord = bidRecord; }
public static CharMemLoc ByName(CharNames charName) { return(All[charName.Id]); }
public abstract bool IsMatchByCharacter(CharNames charName);
public override bool IsMatchById(ushort id, CharNames charName) => Id == id;
public abstract bool IsMatchById(ushort id, CharNames charName);
public TopNameChanged(CharNames charName, string newName) { CharName = charName; NewName = newName; }
public override bool IsMatchByItemId(ushort itemId, CharNames charName) => ItemId == itemId;
public override bool IsMatchByEquipId(ushort equipId, CharNames charName) => EquipmentId == equipId;
public override bool IsMatchByName(string name, CharNames charName) => IsMatchByName(name);
private void ContentListOnScrollChanged(object sender, ScrollChangedEventArgs e) { CharNames.GetChild <ScrollViewer>().ScrollToVerticalOffset(e.VerticalOffset); }
public override bool IsMatchByItemId(ushort itemId, CharNames charName = null) => ItemId == itemId && CharName == charName;