All Projects → karashiiro → node-machina-ffxiv

karashiiro / node-machina-ffxiv

Licence: GPL-3.0 License
An event-based Node.js wrapper for ravahn's Machina network capture library.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to node-machina-ffxiv

TataruHelper
Tataru Helper - application for translation of in-game texts in Japan MMORPG - Final Fantasy XIV. The texts are understood as MSQ, cutscenes, quests, NPC replicas, etc.
Stars: ✭ 255 (+1316.67%)
Mutual labels:  ffxiv
xivtlsheet
ACT、FFLogsを使い、FF14 零式コンテンツのタイムラインスプレッドシートを作成
Stars: ✭ 39 (+116.67%)
Mutual labels:  ffxiv
ffxiv-collect
Another collection tracker for Final Fantasy XIV
Stars: ✭ 32 (+77.78%)
Mutual labels:  ffxiv
Actor
📥 ACT One-click Ready. Prepare plug-ins and settings for use with FFXIV
Stars: ✭ 19 (+5.56%)
Mutual labels:  ffxiv
ACT DFAPlugin
FFXIV Duty Finder Assist for ngld/OverlayPlugin
Stars: ✭ 48 (+166.67%)
Mutual labels:  ffxiv
ffxiv-triple-triad
Another Triple Triad tracker for Final Fantasy XIV
Stars: ✭ 17 (-5.56%)
Mutual labels:  ffxiv
examples
Various examples of setting up your bot with the Sapphire Framework
Stars: ✭ 21 (+16.67%)
Mutual labels:  sapphire
xiv-resources
A list of websites and tools for FFXIV.
Stars: ✭ 117 (+550%)
Mutual labels:  ffxiv
JobBars
A plugin for XIVQuickLauncher which provides extra job bars
Stars: ✭ 31 (+72.22%)
Mutual labels:  ffxiv
XIVSlothCombo
XivCombo for very lazy gamers
Stars: ✭ 69 (+283.33%)
Mutual labels:  ffxiv
FFXIVOpcodes
Opcode repository for FFXIV.
Stars: ✭ 66 (+266.67%)
Mutual labels:  ffxiv
ffxiv-ember-overlay
Powerful, data-focused DPS overlay and spell timers for Final Fantasy XIV (FFXIV). Can be used with the OverlayPlugin and ACTWebSocket plugins for Advanced Combat Tracker (ACT). Updated for Endwalker.
Stars: ✭ 122 (+577.78%)
Mutual labels:  ffxiv
TBbard
Automated FFXIV Bard Performer (Now with MIDI support!)
Stars: ✭ 38 (+111.11%)
Mutual labels:  ffxiv
ffxiv-gearing
Webapp for building and sharing Final Fantasy XIV gearsets. (CN)
Stars: ✭ 50 (+177.78%)
Mutual labels:  ffxiv
ffxiv-better-autokey
Windows terminal tool for automating keystrokes to processes.
Stars: ✭ 15 (-16.67%)
Mutual labels:  ffxiv
FFXIVClientStructs
Resources for reverse-engineering the FFXIV client's native classes.
Stars: ✭ 104 (+477.78%)
Mutual labels:  ffxiv
Marlin-2.0.X-MKS-Robin-Nano
Marlin 2.0.X for the MKS Robin Nano 1.1/1.2
Stars: ✭ 100 (+455.56%)
Mutual labels:  sapphire
Gobchat
A chat overlay for FFXIV to provide a more user-friendly chat experience
Stars: ✭ 19 (+5.56%)
Mutual labels:  ffxiv
DFAssist
FFXIV Duty Finder & F.A.T.E. Assist
Stars: ✭ 65 (+261.11%)
Mutual labels:  ffxiv
FFXIV Modding Tool
FFXIV Modding Tool is the Cross-platform Commandline interface alternative for TexTools
Stars: ✭ 39 (+116.67%)
Mutual labels:  ffxiv

node-machina-ffxiv

A WIP Node.js wrapper for revahn's Machina network capture library.

Many features are unimplemented, and chat-related messages aren't completely working, but besides that what is implemented is probably usable.

If you so choose, you can use it exclusively as a wrapper for Machina with minimal data processing by assigning the raw data event as shown below.

Event type names and all packet structures are taken from the Sapphire server project.

NOTE: Most features besides the raw data event will break after every patch release until the IPC opcodes are updated in the Sapphire repo.

Installation

npm install node-machina-ffxiv

If you don't trust the copy of MachinaWrapperJSON that is built in the Github Action, feel free to also install Visual Studio 2017 Community Edition to build MachinaWrapperJSON and place the output in the MachinaWrapper folder.

Usage

Installing WinPCap is highly recommended, as it reduces the amount of additional setup that needs to be done. Set monitorType to "WinPCap" to enable WinPCap mode.

Otherwise, your application must be run in Administrator mode, and the .exe needs firewall in/out privileges, since it operates on Windows sockets.

Please refer to the wiki for usage.

Example

const MachinaFFXIV = require('node-machina-ffxiv');
const Machina = new MachinaFFXIV();
Machina.start(() => {
    console.log("Machina started!");
});

// Assign event handlers
Machina.on('cFCommence', (content) => {
    console.log(`[${getTime()}]Duty commenced!`);
});

Machina.on('cFRegistered', (content) => {
    console.log(`[${getTime()}]Duty registration complete.`);
});

Machina.on('examineSearchInfo', (content) => {
    console.log(`Viewing search info.
        FC: ${content.fc}
        Search Comment: ${content.searchComment}
        World: ${content.world}
    `);
});

Machina.on('freeCompanyMemberLogin', (content) => {
    console.log(`[${getTime()}][FC]${content.character} has logged in.`);
});

Machina.on('freeCompanyMemberLogout', (content) => {
    console.log(`[${getTime()}][FC]${content.character} has logged out.`);
});

Machina.on('initZone', (content) => {
    console.log(`[${getTime()}]Zone loaded.`);
});

Machina.on('marketBoardItemListing', (content) => {
    var output = "HQ\tMateria\tPrice\tQuantity\tTotal\tCity\t\tRetainer\n";
    for (let i = 0; i < content.prices.length; i++) {
        output += `${content.qualities[i]}\t${content.materiaCounts[i]}\t${content.prices[i]}\t${content.quantities[i]}\t\t${content.totals[i]}\t${content.cities[i] !== "Ul'dah" && content.cities[i] !== "Kugane" && content.cities[i] !== "Ishgard" ? content.cities[i] :
                    (content.cities[i] === "Kugane" ? "Kugane\t" : (content.cities[i] === "Ishgard" ? "Ishgard\t" : "Ul'dah\t"))}\t${content.retainers[i]}\n`;
        if (content.materia[i].length > 0) output += `Materia: ${content.materia[i].toString()}\n`;
    }
    console.log(output);
});

Machina.on('message', (content) => { // Using a supertype event to streamline code
    console.log(`[${getTime()}][${content.type.slice(7)}]<${content.character}> ${content.message}`);
});
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].