Giter Site home page Giter Site logo

ff14_auto's Introduction

最终幻想14自动弹奏


  1. 前言

本项目已用 Spring 框架重构,ff14_auto_spring 加入了 Json 和 YAML 文件的支持,同时代码扩展性高。

主程序是ff14_auto.exe,txt文件是曲谱文件,程序通过读取曲谱文件,根据曲谱文件里的内容建立链表,再模拟成键盘信号输出,就能实现游戏里自动弹琴。

其实这个版本是修改了几次之后的版本。

之前的版本 代码太丢人了 写的跟坨屎样

程序需要管理员权限,请右键-属性-兼容性-勾选 以管理员身份运行此程序-确定

  1. 键位设置

游戏中的键位设置,从左到右:

黑键键位:1 2 3 4 5 6 7 8 9 0 K L O P ,

白键键位:Z X C V B N M A S D F G H J Q W E R T Y U I

目前程序不支持自定义键位,必须在最终幻想14中设置成这种键位。

  1. 开始

打开程序,若曲谱文件和程序在同一个文件夹下,则直接输入曲谱名就行(注意要带后缀),若不在同一个文件夹下,输入绝对位置或相对位置均可。

若输入文件名有误,则会提示 cannot find the file: [文件名],重新输入即可。

程序打开文件成功后,会提示----切换到最终幻想14游戏中开始弹奏----,这时程序会每隔100ms检测当前激活的窗口是否为最终幻想14,当切换到最终幻想14窗口后,程序会自动开始键盘信号的模拟。

  1. 曲谱格式

  • 第一行:调号 (C,D,E,F,G,A,B) ,'#'和'b'作为升号和降号。例D#
  • 第二行:BPM (曲速),2~3位的数字
  • 第三行:音符。

音符的格式:

  • 首字符是数字 (表示不同的音高),同样能用'#'和'b'紧跟首字符表示升号和降号。

  • 用'.'和'`'表示低音点和高音点,写在音高之后。

  • 用'_'和'-'表示时值减半或加一拍,通过复数的'_'或'-'可以构成全音符、二分音符等不同时值的音符。 ( 注:不能混用 )

    具体如下:( X表示音高 )

    • 全音符:X---
    • 二分音符:X-
    • 四分音符:X
    • 八分音符:X_
    • 十六分音符:X__  ( 2* '_' )
    • 三十二分音符:X___  ( 3* '_' )
  • 用':'表示附点音符,要写在音符的最后面。

  • 每个音符用一个空格隔开,当需要改变调号和BPM的时候,音符末尾要有空格,另起一行写调号,后一行写BPM。调号和BPM不能单独改变。 再后一行写音符。

  • 文件最后的音符后面不要有空格。

  • 写的时候不要开中文输入法,会造成符号错误。

    例:

    C
    120
    1 2 3 1 1 2 3 1 
    D
    120
    3 4 5 3 4 5
    
  1. 后续更新

  • 2021.2.24

    更新了同时按下多个按键的功能。

    例:

    1.23.4`56.7`---
    

    对于连在一起的音符,程序会以 20ms 为间隔依次触发按键,只有最后一个音符后的时间是有效时间。

  • 2021.5.28

    把弹奏的音域限制在 ff14 的音域内。如果超过 ff14 乐器的音域,就会把整个曲子降到 ff14 的音域内,如果低于 ff14 的音域就直接忽略(音调变成0)

  • 2021.6.19

    之前是用的 Sleep() 来设置延时,但是频繁的调用 Sleep() 会因为分配 CPU 时间从而造成性能问题。所以用了一个比较笨的无限循环判断当前的毫秒数,达到设定的毫秒数就退出循环 装睡

    实测 Sleep(10) 消耗时间 16ms 左右,循环消耗 11ms 左右。(i5-9300H,16G RAM,GTX1650,512GB SN720)

    当然这种替代方法有缺点,CPU 占用达到了 20% 之多。之前使用 Sleep() 时 CPU 占用基本上看不出来。不过电脑不好应该不会影响这个方法的准确度,毕竟循环的时间准确度取决于每次循环的间隔时间。


ps:图标也是我画的 :D

B站个人空间:https://space.bilibili.com/37864003 里面有介绍视频。

ff14_auto's People

Contributors

zhengdna avatar

Stargazers

 avatar  avatar sh4lloW avatar  avatar Wang Xiang avatar  avatar  avatar 徐振宇 avatar Aikiko avatar Zhenlin.Zhang avatar  avatar  avatar  avatar  avatar  avatar  avatar 七画一只妖 avatar

Watchers

 avatar

ff14_auto's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.