add patreon links
This commit is contained in:
parent
a1be45cbf9
commit
fc0e8ac739
68
.vscode/tasks.json
vendored
68
.vscode/tasks.json
vendored
@ -24,11 +24,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build ReleaseSA",
|
||||
@ -51,11 +52,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build DebugVC",
|
||||
@ -78,11 +80,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build ReleaseVC",
|
||||
@ -105,11 +108,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build DebugIII",
|
||||
@ -132,11 +136,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build ReleaseIII",
|
||||
@ -159,11 +164,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build DebugAll",
|
||||
@ -186,11 +192,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Build ReleaseAll",
|
||||
@ -213,11 +220,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Package all",
|
||||
@ -240,11 +248,12 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Format Code",
|
||||
@ -267,11 +276,32 @@
|
||||
"shell": {
|
||||
"executable": "cmd.exe",
|
||||
"args": [
|
||||
"/d", "/c"
|
||||
"/d",
|
||||
"/c"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppbuild",
|
||||
"label": "C/C++: cl.exe build active file",
|
||||
"command": "cl.exe",
|
||||
"args": [
|
||||
"/Zi",
|
||||
"/EHsc",
|
||||
"/nologo",
|
||||
"/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
|
||||
"${file}"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${fileDirname}"
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$msCompile"
|
||||
],
|
||||
"group": "build",
|
||||
"detail": "compiler: cl.exe"
|
||||
}
|
||||
]
|
||||
}
|
13
FUNDING.yml
Normal file
13
FUNDING.yml
Normal file
@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: grinch_
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
@ -168,7 +168,7 @@ FreecamBackwardKey = "Freecam backward"
|
||||
FreecamForwardKey = "Freecam forward"
|
||||
FreecamLeftKey = "Freecam left"
|
||||
FreecamRightKey = "Freecam right"
|
||||
GitHubRepo = "GitHub repo"
|
||||
GitHubRepo = "GitHub"
|
||||
GodModeKey = "Toggle god mode"
|
||||
Hotkeys = "Hotkeys"
|
||||
InvalidComamnd = "Invalid Command"
|
||||
@ -185,6 +185,8 @@ OpenCMDKey = "Open/ close command window"
|
||||
OpenCMDUsing = "Open or close command window using %s"
|
||||
OpenMenuKey = "Open/ close cheat menu"
|
||||
Overlay = "Overlay"
|
||||
Patreon = "Patreon"
|
||||
PatreonText = "If you like my work, consider supporting :)"
|
||||
Position = "Position"
|
||||
Remove = "Remove"
|
||||
Favourites = "Add to favourites"
|
||||
|
@ -329,7 +329,6 @@ void CheatMenu::ShowWelcomePage()
|
||||
|
||||
ImGui::NewLine();
|
||||
ImGui::TextWrapped(TEXT("Menu.EnsureLatest"));
|
||||
ImGui::NewLine();
|
||||
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
|
||||
{
|
||||
OPEN_LINK(DISCORD_INVITE);
|
||||
@ -341,6 +340,12 @@ void CheatMenu::ShowWelcomePage()
|
||||
}
|
||||
ImGui::NewLine();
|
||||
ImGui::TextWrapped(TEXT("Menu.BugDisclaimer"));
|
||||
ImGui::Dummy(ImVec2(0, 20));
|
||||
Widget::TextCentered(TEXT("Menu.PatreonText"));
|
||||
if (ImGui::Button(TEXT("Menu.Patreon"), ImVec2(Widget::CalcSize(1))))
|
||||
{
|
||||
OPEN_LINK("https://www.patreon.com/grinch_");
|
||||
}
|
||||
ImGui::Dummy(ImVec2(0, 30));
|
||||
Widget::TextCentered(TEXT("Menu.CopyrightDisclaimer"));
|
||||
}
|
||||
|
78
src/custom/cutscene_sa.cpp
Normal file
78
src/custom/cutscene_sa.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
#include "pch.h"
|
||||
#include "cutscene_sa.h"
|
||||
|
||||
CutsceneMgr& Cutscene = *CutsceneMgr::Get();
|
||||
CutsceneMgr::CutsceneMgr()
|
||||
{
|
||||
static CdeclEvent <AddressList<0x5B195F, H_JUMP>, PRIORITY_AFTER, ArgPickNone, void()> skipCutsceneEvent;
|
||||
skipCutsceneEvent += [this]()
|
||||
{
|
||||
Stop();
|
||||
};
|
||||
}
|
||||
|
||||
void CutsceneMgr::Play(std::string& rootKey, std::string& cutsceneId, std::string& interior)
|
||||
{
|
||||
if (CCutsceneMgr::ms_running)
|
||||
{
|
||||
Util::SetMessage(TEXT("Animation.CutsceneRunning"));
|
||||
return;
|
||||
}
|
||||
|
||||
CPlayerPed* pPlayer = FindPlayerPed();
|
||||
if (pPlayer)
|
||||
{
|
||||
m_pLastVeh = pPlayer->m_nPedFlags.bInVehicle ? pPlayer->m_pVehicle : nullptr;
|
||||
m_nVehSeat = -1;
|
||||
|
||||
if (m_pLastVeh && m_pLastVeh->m_pDriver != pPlayer)
|
||||
{
|
||||
for (size_t i = 0; i != 8; ++i)
|
||||
{
|
||||
if (m_pLastVeh->m_apPassengers[i] == pPlayer)
|
||||
{
|
||||
m_nVehSeat = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
CCutsceneMgr::LoadCutsceneData(cutsceneId.c_str());
|
||||
CCutsceneMgr::Update();
|
||||
|
||||
m_nInterior = pPlayer->m_nAreaCode;
|
||||
pPlayer->m_nAreaCode = std::stoi(interior);
|
||||
Command<Commands::SET_AREA_VISIBLE>(pPlayer->m_nAreaCode);
|
||||
CutsceneMgr::m_bRunning = true;
|
||||
CCutsceneMgr::StartCutscene();
|
||||
}
|
||||
}
|
||||
|
||||
void CutsceneMgr::Stop()
|
||||
{
|
||||
if (CutsceneMgr::m_bRunning)
|
||||
{
|
||||
CPlayerPed *pPlayer = FindPlayerPed();
|
||||
int hPlayer = CPools::GetPedRef(pPlayer);
|
||||
|
||||
CCutsceneMgr::DeleteCutsceneData();
|
||||
CutsceneMgr::m_bRunning = false;
|
||||
pPlayer->m_nAreaCode = CutsceneMgr::m_nInterior;
|
||||
CutsceneMgr::m_nInterior = 0;
|
||||
Command<Commands::SET_AREA_VISIBLE>(pPlayer->m_nAreaCode);
|
||||
|
||||
// handle vehicle
|
||||
if (CutsceneMgr::m_pLastVeh)
|
||||
{
|
||||
int hVeh = CPools::GetVehicleRef(CutsceneMgr::m_pLastVeh);
|
||||
if (CutsceneMgr::m_nVehSeat == -1)
|
||||
{
|
||||
Command<Commands::WARP_CHAR_INTO_CAR>(hPlayer, hVeh);
|
||||
}
|
||||
else
|
||||
{
|
||||
Command<Commands::WARP_CHAR_INTO_CAR_AS_PASSENGER>(hPlayer, hVeh, CutsceneMgr::m_nVehSeat);
|
||||
}
|
||||
}
|
||||
TheCamera.Fade(0, 1);
|
||||
}
|
||||
}
|
35
src/custom/cutscene_sa.h
Normal file
35
src/custom/cutscene_sa.h
Normal file
@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
#include "utils/resourcestore.h"
|
||||
#include "interface/icheat.hpp"
|
||||
|
||||
extern class CVehicle;
|
||||
|
||||
/*
|
||||
Cutscene Player Class for SA
|
||||
Plays mission cutscenes
|
||||
*/
|
||||
class CutsceneMgr : public ICheat<CutsceneMgr>
|
||||
{
|
||||
private:
|
||||
bool m_bRunning; // is cutscene currently running
|
||||
|
||||
// backup data
|
||||
int m_nInterior; // interior player was in
|
||||
CVehicle *m_pLastVeh; // vehicle player was in
|
||||
int m_nVehSeat; // seat id of player vehicle
|
||||
|
||||
friend class ICheat;
|
||||
CutsceneMgr();
|
||||
CutsceneMgr(const CutsceneMgr&);
|
||||
|
||||
public:
|
||||
ResourceStore m_Data{ "cutscenes", eResourceType::TYPE_TEXT }; // names
|
||||
|
||||
// Plays a cutscene
|
||||
void Play(std::string& cat, std::string& key, std::string& val);
|
||||
|
||||
// Stops a running cutscene
|
||||
void Stop();
|
||||
};
|
||||
|
||||
extern CutsceneMgr& Cutscene;
|
@ -19,81 +19,7 @@
|
||||
|
||||
#ifdef GTASA
|
||||
#include "utils/overlay.h"
|
||||
|
||||
void Cutscene::Init()
|
||||
{
|
||||
static CdeclEvent <AddressList<0x5B195F, H_JUMP>, PRIORITY_AFTER, ArgPickNone, void()> skipCutsceneEvent;
|
||||
skipCutsceneEvent += []()
|
||||
{
|
||||
Stop();
|
||||
};
|
||||
}
|
||||
|
||||
void Cutscene::Play(std::string& rootKey, std::string& cutsceneId, std::string& interior)
|
||||
{
|
||||
if (CCutsceneMgr::ms_running)
|
||||
{
|
||||
Util::SetMessage(TEXT("Animation.CutsceneRunning"));
|
||||
return;
|
||||
}
|
||||
|
||||
CPlayerPed* pPlayer = FindPlayerPed();
|
||||
if (pPlayer)
|
||||
{
|
||||
m_pLastVeh = pPlayer->m_nPedFlags.bInVehicle ? pPlayer->m_pVehicle : nullptr;
|
||||
m_nVehSeat = -1;
|
||||
|
||||
if (m_pLastVeh && m_pLastVeh->m_pDriver != pPlayer)
|
||||
{
|
||||
for (size_t i = 0; i != 8; ++i)
|
||||
{
|
||||
if (m_pLastVeh->m_apPassengers[i] == pPlayer)
|
||||
{
|
||||
m_nVehSeat = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
CCutsceneMgr::LoadCutsceneData(cutsceneId.c_str());
|
||||
CCutsceneMgr::Update();
|
||||
|
||||
m_nInterior = pPlayer->m_nAreaCode;
|
||||
pPlayer->m_nAreaCode = std::stoi(interior);
|
||||
Command<Commands::SET_AREA_VISIBLE>(pPlayer->m_nAreaCode);
|
||||
Cutscene::m_bRunning = true;
|
||||
CCutsceneMgr::StartCutscene();
|
||||
}
|
||||
}
|
||||
|
||||
void Cutscene::Stop()
|
||||
{
|
||||
if (Cutscene::m_bRunning)
|
||||
{
|
||||
CPlayerPed *pPlayer = FindPlayerPed();
|
||||
int hPlayer = CPools::GetPedRef(pPlayer);
|
||||
|
||||
CCutsceneMgr::DeleteCutsceneData();
|
||||
Cutscene::m_bRunning = false;
|
||||
pPlayer->m_nAreaCode = Cutscene::m_nInterior;
|
||||
Cutscene::m_nInterior = 0;
|
||||
Command<Commands::SET_AREA_VISIBLE>(pPlayer->m_nAreaCode);
|
||||
|
||||
// handle vehicle
|
||||
if (Cutscene::m_pLastVeh)
|
||||
{
|
||||
int hVeh = CPools::GetVehicleRef(Cutscene::m_pLastVeh);
|
||||
if (Cutscene::m_nVehSeat == -1)
|
||||
{
|
||||
Command<Commands::WARP_CHAR_INTO_CAR>(hPlayer, hVeh);
|
||||
}
|
||||
else
|
||||
{
|
||||
Command<Commands::WARP_CHAR_INTO_CAR_AS_PASSENGER>(hPlayer, hVeh, Cutscene::m_nVehSeat);
|
||||
}
|
||||
}
|
||||
TheCamera.Fade(0, 1);
|
||||
}
|
||||
}
|
||||
#include "custom/cutscene_sa.h"
|
||||
|
||||
void Particle::Play(std::string& cat, std::string& name, std::string& particle)
|
||||
{
|
||||
@ -273,7 +199,6 @@ void Animation::Play(std::string& cat, std::string& anim, std::string& ifp)
|
||||
void Animation::Init()
|
||||
{
|
||||
#ifdef GTASA
|
||||
Cutscene::Init();
|
||||
Events::processScriptsEvent += []
|
||||
{
|
||||
CPlayerPed* pPlayer = FindPlayerPed();
|
||||
@ -434,14 +359,14 @@ void Animation::ShowPage()
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button(TEXT("Animation.StopCutscene"), Widget::CalcSize()))
|
||||
{
|
||||
Cutscene::Stop();
|
||||
Cutscene.Stop();
|
||||
}
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::BeginChild("Cutscene Child"))
|
||||
{
|
||||
ImGui::Spacing();
|
||||
Widget::DataList(Cutscene::m_Data, Cutscene::Play);
|
||||
Widget::DataList(Cutscene.m_Data, [](std::string& a, std::string& b, std::string& c){Cutscene.Play(a, b, c);});
|
||||
ImGui::EndChild();
|
||||
}
|
||||
ImGui::EndTabItem();
|
||||
|
@ -2,35 +2,7 @@
|
||||
#include "pch.h"
|
||||
|
||||
#ifdef GTASA
|
||||
/*
|
||||
Cutscene Player Class for SA
|
||||
Plays mission cutscenes
|
||||
*/
|
||||
class Cutscene
|
||||
{
|
||||
private:
|
||||
static inline bool m_bRunning; // is cutscene currently running
|
||||
|
||||
// backup data
|
||||
static inline int m_nInterior; // interior player was in
|
||||
static inline CVehicle *m_pLastVeh; // vehicle player was in
|
||||
static inline int m_nVehSeat; // seat id of player vehicle
|
||||
|
||||
public:
|
||||
static inline ResourceStore m_Data{ "cutscenes", eResourceType::TYPE_TEXT }; // names
|
||||
|
||||
Cutscene() = delete;
|
||||
Cutscene(const Cutscene&) = delete;
|
||||
|
||||
// Initializes hooks, vars etc.
|
||||
static void Init();
|
||||
|
||||
// Plays a cutscene
|
||||
static void Play(std::string& cat, std::string& key, std::string& val);
|
||||
|
||||
// Stops a running cutscene
|
||||
static void Stop();
|
||||
};
|
||||
|
||||
/*
|
||||
Particle Player Class for SA
|
||||
|
@ -285,24 +285,29 @@ void Menu::ShowPage()
|
||||
{
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::Button(TEXT("Menu.CheckUpdate"), ImVec2(Widget::CalcSize(3))))
|
||||
if (ImGui::Button(TEXT("Menu.CheckUpdate"), ImVec2(Widget::CalcSize(2))))
|
||||
{
|
||||
Updater::CheckUpdate();
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(3))))
|
||||
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
|
||||
{
|
||||
OPEN_LINK(DISCORD_INVITE);
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(3))))
|
||||
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(2))))
|
||||
{
|
||||
OPEN_LINK(GITHUB_LINK);
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button(TEXT("Menu.Patreon"), ImVec2(Widget::CalcSize(2))))
|
||||
{
|
||||
OPEN_LINK("https://www.patreon.com/grinch_");
|
||||
}
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::BeginChild("AboutChild"))
|
||||
@ -320,6 +325,9 @@ void Menu::ShowPage()
|
||||
|
||||
ImGui::Dummy(ImVec2(0, 10));
|
||||
ImGui::TextWrapped(TEXT("Menu.BugDisclaimer"));
|
||||
ImGui::Spacing();
|
||||
Widget::TextCentered(TEXT("Menu.PatreonText"));
|
||||
|
||||
ImGui::Dummy(ImVec2(0, 10));
|
||||
Widget::TextCentered(TEXT("Menu.CopyrightDisclaimer"));
|
||||
|
||||
|
10
src/pch.h
10
src/pch.h
@ -6,7 +6,6 @@
|
||||
#include <d3d11Shader.h>
|
||||
#include <filesystem>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
@ -78,11 +77,12 @@ enum eRenderer
|
||||
extern eRenderer gRenderer;
|
||||
extern DataStore gConfig;
|
||||
|
||||
typedef void(*ArgCallback3)(std::string&, std::string&, std::string&);
|
||||
typedef void(*ArgCallback)(std::string&);
|
||||
typedef std::string str;
|
||||
typedef void(*ArgCallback3)(str&, str&, str&);
|
||||
typedef void(*ArgCallback)(str&);
|
||||
typedef void(*ArgCallbackNone)();
|
||||
typedef std::string(*ArgCallbackRtn)(std::string&);
|
||||
typedef bool(*ArgCallbackRtnBool)(std::string&);
|
||||
typedef std::string(*ArgCallbackRtn)(str&);
|
||||
typedef bool(*ArgCallbackRtnBool)(str&);
|
||||
|
||||
#ifdef GTASA
|
||||
extern const char* taskNames[1802];
|
||||
|
Loading…
Reference in New Issue
Block a user