Page 1 of 3

darkstar-afterhours: The FFXIAH Clone

Posted: Wed Nov 02, 2016 11:51 pm
by krynn
WARNING: Currently this is being directly developed for the AfterHours server I am currently running. If you have issues setting this up on your own private server please respond in to the post with said issues and I will do my best to help you sort it out. If you have encountered a bug in the software, please report it to Github under Issues. Please understand however I am currently in a stage of high development activity and I am likely to change things on a daily basis that may or may not break your install.

Image darkstar-afterhours
An FFXIAH Clone for the Darkstar FFXI Server Emulator

This project is an attempt to make a usable clone of FFXIAH for people running the Darkstar FFXI Server Emulator. Built specifically for the AfterHours private server, but can be utilized anywhere.

Features:
  • Users Online List / Full User List
  • Character Profiles (Stats/Jobs/Crafts/Missions/AH History)
  • Armor/Weapon Tooltips (Item Mods/Info pulled from the Darkstar Database)
  • Descriptive Item Tooltips use information from the FFXIAH Item XML.
  • Auction House Category Listings
  • Auction House Item Information
  • Auction House Item Search
  • Crafting Recipe Lists
  • Custom Shop Listings
  • Remastered In-game Icons
  • Help/FAQ Section
Please reference the project README on Github for the current project goals and completed milestones.

https://github.com/kyau/darkstar-afterhours

Live Demo: https://ffxi.kyau.net:4444/
  • Thanks to Run_Away and Velo for help in getting many things working.
  • Also a big thanks to everyone in #darkstarproject on Rizon.

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Wed Nov 02, 2016 11:55 pm
by krynn
Adding Login/Logout to Audit Log

FILE: src/map/map.cpp
Add to the top of the file at the end of the includes.

Code: Select all

#include "packets/chat_message.h"
Then inside the `map_cleanup` function after the lines:

Code: Select all

                        PChar->status = STATUS_SHUTDOWN;
                        PacketParser[0x00D](map_session_data, PChar, 0);
Add the following code:

Code: Select all

                        int8 packetData[4]{};
                        WBUFL(packetData, 0) = PChar->id;
                        std::string bStr = ("* ");
                        bStr += PChar->GetName();
                        bStr += " has logged out.";
                        CHAT_MESSAGE_TYPE messageType = MESSAGE_LOGON;
                        message::send(MSG_CHAT_SERVMES, 0, 0, new CChatMessagePacket(PChar, messageType, (int8*)bStr.c_str()));
                        std::string qStr = ("INSERT into audit_chat (speaker,type,message,datetime) VALUES('");
                        qStr += "AfterHours";
                        qStr += "','SAY','* ";
                        qStr += PChar->GetName();
                        qStr += " has logged out.";
                        qStr += "',current_timestamp());";
                        const char * cC = qStr.c_str();
                        Sql_QueryStr(SqlHandle, cC);
This will handle when a user disconnects without using `/logout`.

FILE: src/map/packet_system.cpp
Now for the /logout function.
Next search for the function `SmallPacket0x0E7` and add the following right before the `return;` line that ends the function:

Code: Select all

    int8 packetData[4]{};
    WBUFL(packetData, 0) = PChar->id;
    std::string bStr = ("* ");
    bStr += PChar->GetName();
    bStr += " has logged out.";
    CHAT_MESSAGE_TYPE messageType = MESSAGE_LOGON;
    message::send(MSG_CHAT_SERVMES, 0, 0, new CChatMessagePacket(PChar, messageType, (int8*)bStr.c_str()));
    std::string qStr = ("INSERT into audit_chat (speaker,type,message,datetime) VALUES('");
    qStr += "AfterHours";
    qStr += "','SAY','* ";
    qStr += PChar->GetName();
    qStr += " has logged out.";
    qStr += "',current_timestamp());";
    const char * cC = qStr.c_str();
    Sql_QueryStr(SqlHandle, cC);
FILE: src/map/lua/luautil.cpp
Search for the `OnGameIn` function and after the line:

Code: Select all

        lua_pushboolean(LuaHandle, PChar->GetPlayTime(false) == 0); // first login
Add the following code:

Code: Select all

        if (!zoning)
        {
            std::string qStr = ("INSERT into audit_chat (speaker,type,message,datetime) VALUES('");
            qStr += "AfterHours";
            qStr += "','SAY','* ";
            qStr += PChar->GetName();
            qStr += " has logged on.";
            qStr += "',current_timestamp());";
            const char * cC = qStr.c_str();
            Sql_QueryStr(SqlHandle, cC);
        }
FILE: src/map/packets/chat_message.h
Near the top of the file there is a `CHAT_MESSAGE_TYPE` enum, add the following line inside the braces:

Code: Select all

    MESSAGE_LOGON       = 0x1C,
This last part is my personal preference I use the green linkshell color for the in-game login/logout messages.

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Fri Nov 04, 2016 1:42 am
by Avatarati
Very nice work!

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Fri Nov 04, 2016 2:18 am
by krynn
Well by all means, there is no reason we cannot collaborate. :twisted:

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Wed Nov 09, 2016 4:09 pm
by krynn

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Mon Nov 14, 2016 6:20 pm
by bluesolarflare
I am actually using this now on my server though I haven't programmed everything yet. I was using another dashboard, but this is by far much more advanced and cleaner looking. I have already gone thru and added my own tweaks to the dashboard including showing players names as blue with their jobs as [ / ] whenever they go anon and a Notorious Monster Tracker showing if the NM's window is open or if it has been killed along with the window spawn time. Also, when the NM name is clicked takes players to BG as reference.

Image

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Mon Nov 14, 2016 8:31 pm
by krynn
Cheers, nice to see some more people playing around with this^^

I borrowed your supported client version idea already. I also really like the NM Tracker, great idea!

Heads up too, might want to check out the repo as I made a ton of changes/additions recently.

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Tue Nov 15, 2016 2:25 pm
by krynn
Did some heavy work on this last night and this morning. Recipes should be completely working now (lists and on item pages). I also added Bazaar's to character profiles and individual item pages. I will probably be adding a Master Bazaar List as well.

Next I will be trying to finish item tooltips (latents/onuse) and then start working on the search filter.

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Sun Nov 20, 2016 3:18 pm
by bluesolarflare
Krynn

Sent you a PM in regards to auditing logins for chat.

Re: darkstar-afterhours: The FFXIAH Clone

Posted: Mon Nov 21, 2016 5:25 pm
by krynn
Put the response to your PM in the first reply of this thread so others have access to the information as well.

P.S. Let me know if you have any issues implementing it.